Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/html/69.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 使用css类更改所有元素的颜色_Javascript_Html_Css - Fatal编程技术网

Javascript 使用css类更改所有元素的颜色

Javascript 使用css类更改所有元素的颜色,javascript,html,css,Javascript,Html,Css,我试图更改类中所有元素的颜色,但我有一个错误: 无法将未定义或null转换为对象 我有密码: <div class="kolorek" onclick="changeColor('34495e');" style="background-color:#34495e;"></div> 由于getElementsByClassName将返回HTMLCollection,因此必须循环使用它们来设置颜色,如下所示 函数更改颜色(颜色){ var block=document.

我试图更改类中所有元素的颜色,但我有一个错误:

无法将未定义或null转换为对象

我有密码:

<div class="kolorek" onclick="changeColor('34495e');" style="background-color:#34495e;"></div>

由于
getElementsByClassName
将返回
HTMLCollection
,因此必须循环使用它们来设置颜色,如下所示

函数更改颜色(颜色){
var block=document.getElementsByClassName('kafelek');
对于(变量i=0;i
可点击Div

另一个Div
首先,您正在搜索错误的元素,您可以使用element.style访问样式,要更改backgroundColor,它应该是element.style.backgroundColor=color

检查此代码段

函数更改颜色(颜色){
var block=document.querySelector('.kolorek');
console.log(block.style);
block.style.backgroundColor=“#”+颜色;
};

sdfdsfds
首先,不建议甚至禁止将
一起使用,因为es5处于严格模式(请参阅我在上面评论中发布的链接)。其次,您的目标元素的类是
kafelek
,但在html中显示的类是
kolorek
。第三个错误是,您试图在HTMLCollection上设置属性,但该属性不存在。它存在于单个元素上。您需要将代码重构为以下内容:

function changeColor(color) {
    var block = document.getElementsByClassName('kolorek');
    Array.prototype.forEach.call(block, function(el) {
        el.style.backgroundColor = '#' + color;
    }
};

div class=“kolorek”
document.getElementsByClassName('kafelek')
HTMLCollection
上没有
.style
属性。不建议使用with语句,因为它可能会导致混淆错误和兼容性问题。有关详细信息,请参见下面“说明”部分中的“歧义对照”一段。这里:OP不一定要更改正在单击的元素,并引用更改所有元素,因此暗示了循环。
事件
对象在所有浏览器中都不全局可用。如果向函数中添加一个参数,并在属性调用中传递完整的单词
event
,它将起作用。它还将仅更改单击的元素背景色,但问题要求更改具有给定属性的所有元素的背景色class@Aristov如果答案对您有效,您可以接受:-)
function changeColor(color) {
    var block = document.getElementsByClassName('kolorek');
    Array.prototype.forEach.call(block, function(el) {
        el.style.backgroundColor = '#' + color;
    }
};