2017-08-26 82 views
0

使用下面的代码我想在用户单击<button>时插入一些<content>GetElementBy仅适用于ID不适用于类

之前我与this代码工作完全正常。然后,我将id="content"更改为class="content",将JavaScript代码的document.getElementById更改为getElementsByClassName,现在该功能不再有效。

我有什么要改变我的代码,所以它也适用于类?

您还可以找到我的代码here

window.myFunction = function() { 
 
    var x = document.getElementsByClassName("content"); 
 
    if (x.style.display === 'none') { 
 
     x.style.display = 'block'; 
 
    } else { 
 
     x.style.display = 'none'; 
 
    } 
 
}
.content { 
 
    width: 80%; 
 
    padding: 10% 
 
    text-align: center; 
 
    background-color: lightblue; 
 
    margin-top:20px; 
 
}
<button onclick="myFunction()">Button</button> 
 

 
<div class="content"> 
 
Content of element 
 
</div>

+0

变化开始'类名(一个索引)[0]'怎么一回事,因为类名是多重选择器 – prasanth

回答

2

方法getElementsByClassName

返回其具有所有的 给定的类名的所有子元素的阵列状物体。

详情请点击here。出于这个原因,你必须得到你的数组的第一个元素,以获得相同的结果。您可以通过使用0

window.myFunction = function() { 
 
    var x = document.getElementsByClassName("content")[0]; 
 
    if (x.style.display === 'none') { 
 
     x.style.display = 'block'; 
 
    } else { 
 
     x.style.display = 'none'; 
 
    } 
 
}
.content { 
 
    width: 80%; 
 
    padding: 10% 
 
    text-align: center; 
 
    background-color: lightblue; 
 
    margin-top:20px; 
 
}
<button onclick="myFunction()">Button</button> 
 

 
<div class="content"> 
 
Content of element 
 
</div>

+1

嗨克里斯托,非常感谢这个快速的答案。 [0]究竟意味着什么? – Michi

+0

我也在这里更新了它https://jsfiddle.net/9mj4ho2k/1/。 – Michi

+0

@Michi啊好的,明白:) – Christos

3

一种更好的方式索引做这个访问是:在本地JavaScript提供

var x = document.querySelector(".content");

+0

您好Punit Gupta,为什么它比getElementsByClassName方法更好?我是一个新手,期待:-) – Michi

+0

'querySelector'方法一些专家的意见可以用来指任何DOM元素与任何简单的和复杂的CSS选择器。虽然这是完全没使用'getElementById'和'getElementsByClassName'单号或单类名,'querySelector'能对付像“内容DIV”或“内容P”,情况下,当你想获得一分标签下的类或ID。 –

+0

@Michi您可以使用“Google”搜索引擎找到专家建议,该搜索引擎将指向成千上万的教程,引荐,文档页面和博客文章。 – 2017-08-26 06:33:42

2

你有不同的方法(对于那些不使用jQuery)来获取页面上的任何元素。 这些是

  1. document.querySelectorAll()

    document.querySelectorAll("div.classNameOne, div.classNameTwo");

  2. document.querySelector(选择器)

    document.querySelector("div.className")

  3. 的document.getElementById(元件的idname)

    document.getElementById("element_id")

  4. document.getElementsByTagName(标记名 - 让网页上的所有股利或跨度)

    document.getElementsByTagName("div")

  5. 文件。getElementsByClassName方法(类名 - 获取特定类名的所有元素)

    document.getElementsByClassName("your_css_class_name")

  6. 您还可以通过

    document.getElementsByTagName("H1")[0].getAttribute("class");

得到元素的任何属性,当它返回多个元素,它像数组一样返回它们。你可以对其进行索引使用从0

+0

嗨阿米特,谢谢你的回答和建议。顺便说一句,仍然有很多人使用jQuery或者它“过时”了吗? – Michi

+0

不,jquery不是过时的,也不是javascript。我的意思是人们通常使用大量的jquery来进行元素选择。 – Amit

+0

很难支持jQuery不过时的观点,并且考虑使用和采用的任何度量标准。 – 2017-08-26 06:37:54