单击[Javascript]时更改所有Divs的颜色

单击[Javascript]时更改所有Divs的颜色,javascript,html,css,Javascript,Html,Css,我尝试编写一个程序,在单击时更改所有div颜色。 首先,只需单击一下,它就可以更改每个Div的颜色,一切正常! 当我添加一些代码来更改所有div颜色时,问题就出现了。当我单击属性为credit的div元素时,这些代码不起作用 let x=document.getElementById(“容器”); 设y=x; 函数myFunction(){ for(设i=0;i{ //若你们不需要在颜色上循环,那个么在下面一行进行更改 const color=colorset[单击%colorset.leng

我尝试编写一个程序,在单击时更改所有div颜色。 首先,只需单击一下,它就可以更改每个Div的颜色,一切正常! 当我添加一些代码来更改所有div颜色时,问题就出现了。当我单击属性为credit的div元素时,这些代码不起作用

let x=document.getElementById(“容器”);
设y=x;
函数myFunction(){
for(设i=0;i

时钟
我是第一组
我是二组
我是第三组

若单击的元素具有“credit”属性,则应迭代并在所有子元素上设置颜色,以实现所需。 考虑到其他注释,我已使用'data-'前缀重命名属性。 您可以给所有div指定一个类名并以这种方式进行迭代,也可以只迭代x.children,这是最适合您的场景的

//更新: 更新代码以处理注释中的其他问题

请参阅下面的工作代码段:

let x=document.getElementById(“容器”);
设y=x;
//在这里定义你的颜色
常数colorsMap={
“刚毛”:[“红”、“蓝”],
“挫折”:[“黄色”、“橙色”]
};
//生成一个函数来处理元素的颜色更改
//特定于每个元素的颜色集在html中定义为数据颜色
功能手柄颜色变化(ele){
const colorset=colorsMap[ele.getAttribute(“数据颜色”)||“setA”];
常量值=ele.getAttribute(“数据值”);
const credit=ele.getAttribute(“数据信用”)| | false;
让click=0;
return()=>{
//若你们不需要在颜色上循环,那个么在下面一行进行更改
const color=colorset[单击%colorset.length];
点击++;
国际单项体育联合会(学分){
Object.values(x.children.forEach)(
函数(子){child.style.color=color;}
);
}
否则{
ele.style.color=颜色;
}
}
}
//附加颜色更改功能
函数myFunction(){
for(设i=0;i
。颜色测试{
光标:指针;
}

时钟
我是第一组
我是二组
我是第三组

您应该使用
数据值
数据信用
,因为这两个都是
div
元素的非标准属性通过
y
循环,您正在将
单击
变量重置为0。所以在每个循环中它总是0。将其移出循环。@JeremyHarris
click
是一个
let
块作用域变量。它没有被重置。为每个迭代创建一个新的迭代。(在实现ES6功能的浏览器中提供)也可以通过运行代码段看到,底部的if条件周围存在语法错误。这里的解决方案是什么?我们如何更改它,以便在单击最后一个div时,所有其他div再次更改颜色@ksankar@GoodnessGoodnessChi我已经更新了代码来处理这个场景。此外,代码现在更加灵活,可以循环使用颜色,您可以轻松添加更多颜色。请向我解释这一行….const color=colorset[clic%colorset.length];我想知道为什么我们在那里使用%呢?有必要使用它吗?那%是为了让你可以循环使用颜色,比如说你的颜色集中有3种颜色<代码>单击1=>1%3=>1
(使用颜色1),
单击2=>2%3=>2
(使用颜色2),
单击3=>3%3=>0
(使用颜色0),
单击1=>1%3=>1
(使用颜色1)`以这种方式循环。