Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/css/34.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 将单击事件功能应用于多个元素,包括if/else_Javascript_Css - Fatal编程技术网

Javascript 将单击事件功能应用于多个元素,包括if/else

Javascript 将单击事件功能应用于多个元素,包括if/else,javascript,css,Javascript,Css,只要我限制自己只选择一个ID,这段代码就会正确运行。问题是,当我使用GetElementsByCassName将相同的click函数应用于整个类时,我得到的样式是未定义的。。。我试过不同的方法,但都不管用。我把两个版本的代码都放在这里了。第一个有效,但第二个无效。有什么我没看见的吗 我把两个版本的代码都放在这里了。第一个有效,但第二个无效。有什么我没看见的吗 这是第一个版本,可用于单个元素: var cardTitle = document.getElementById("testCard");

只要我限制自己只选择一个ID,这段代码就会正确运行。问题是,当我使用GetElementsByCassName将相同的click函数应用于整个类时,我得到的样式是未定义的。。。我试过不同的方法,但都不管用。我把两个版本的代码都放在这里了。第一个有效,但第二个无效。有什么我没看见的吗

我把两个版本的代码都放在这里了。第一个有效,但第二个无效。有什么我没看见的吗

这是第一个版本,可用于单个元素:

var cardTitle = document.getElementById("testCard");
var cardBackground = document.getElementById("testBack");
cardBackground.style.backgroundColor = "rgb(102, 102, 102)";

function toggleColor() {
    if(cardBackground.style.backgroundColor == "rgb(102, 102, 102)") {
        cardBackground.style.backgroundColor = "rgb(218, 164, 65)"
    } else {
        cardBackground.style.backgroundColor = "rgb(102, 102, 102)"
    }

}

cardTitle.addEventListener("click", toggleColor);

这是一个包含不起作用的类的版本。现在if/else中的样式将是未定义的

var cardTitle = document.getElementsByClassName("custom-collapse-btn");
var cardBackground = document.getElementsByClassName("card-section");

for (i = 0; i < cardBackground.length; i++) {
    cardBackground[i].style.backgroundColor = "rgb(102, 10, 102)";

}

function toggleColor() {
    if(cardBackground.style.backgroundColor == "rgb(102, 102, 102)") {
        cardBackground.style.backgroundColor = "rgb(218, 164, 65)"
    } else {
        cardBackground.style.backgroundColor = "rgb(102, 102, 102)"
    }

}

for (let n = 0; n < cardTitle.length; n++) {
    cardTitle[n].addEventListener("click", toggleColor);

}

var cardTitle=document.getElementsByClassName(“自定义折叠btn”);
var cardBackground=document.getElementsByClassName(“卡节”);
对于(i=0;i

我想在单击时将颜色切换到同一类的所有元素。它使用单个元素并使用getElementByID()以Id为目标工作,但当我切换到类和循环时,无论我做什么,样式都是未定义的。任何帮助都将不胜感激:)

在事件侦听器中,
这将是事件的目标

function toggleColor() {
    if(this.style.backgroundColor == "rgb(102, 102, 102)") {
        this.style.backgroundColor = "rgb(218, 164, 65)"
    } else {
        this.style.backgroundColor = "rgb(102, 102, 102)"
    }
}

cardBackground=document.getElementsByClassName(“卡节”)
使其成为集合,而不是元素,因此它没有
style.backgroundColor
属性-您将看到抛出的错误。您可能想访问
cardBackground[i].style.backgroundColor
(并使用
let
在循环中声明您的
i
cardBackground
是一个集合,您必须像在
for
循环中一样对其进行索引。