GetElementBy仅适用于ID而不适用于类

时间:2017-08-26 06:17:36

标签: javascript html css

使用下面的代码,我想在用户点击<content>后插入一些<button>

在我使用完全正常的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>

3 个答案:

答案 0 :(得分:3)

更好的方法是:

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

答案 1 :(得分:2)

方法std::list

  

返回具有全部子元素的所有子元素的类数组对象   给定的类名。

如需了解更多信息,请查看here。因此,您必须获取数组的第一个元素,以获得相同的结果。您可以使用索引0来访问它。

getElementsByClassName
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;
}

答案 2 :(得分:2)

您可以在本机javascript中使用不同的方法(对于那些不使用jquery的方法)来获取页面上的任何元素。  这些是

  1. document.querySelectorAll()

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

  2. document.querySelector(selector)

    document.querySelector("div.className")

  3. document.getElementById(元素的idname)

    document.getElementById("element_id")

  4. document.getElementsByTagName(标记名 - 获取页面上的所有div或span)

    document.getElementsByTagName("div")

  5. document.getElementsByClassName(classname - 获取具有特定类名的所有元素)

    document.getElementsByClassName("your_css_class_name")

  6. 您还可以通过

    获取元素的任何属性

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

  7. 当它返回多个元素时,它会像数组一样返回它们。您可以使用从0开始的索引器索引它们。