Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/430.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 onclick将classname添加到div_Javascript_Jquery_Html_Css - Fatal编程技术网

使用javascript onclick将classname添加到div

使用javascript onclick将classname添加到div,javascript,jquery,html,css,Javascript,Jquery,Html,Css,我想用javascript实现类似于当我点击任何一个缩略图(btn-1、btn-2和btn-3)时,应该将特定类动态添加到box div 我的代码: document.getElementById('btn-1')。onclick=function(){ document.getElementById('box')。className='bg-1'; } #框{ 背景色:暗灰色; 宽度:200px; 高度:200px; } .缩略图{ 宽度:30px; 高度:30px; 边框:1px实心; 保

我想用javascript实现类似于当我点击任何一个缩略图(btn-1、btn-2和btn-3)时,应该将特定类动态添加到box div

我的代码:

document.getElementById('btn-1')。onclick=function(){
document.getElementById('box')。className='bg-1';
}
#框{
背景色:暗灰色;
宽度:200px;
高度:200px;
}
.缩略图{
宽度:30px;
高度:30px;
边框:1px实心;
保证金:5px;
位置:相对位置;
浮动:左;
}
#btn-1{
背景色:红色;
}
#btn-2{
背景颜色:绿色;
}
#btn-3{
背景颜色:蓝色;
}
.bg-1{
背景色:红色;
}
.bg-2{
背景颜色:蓝色;
}
.bg-3{
背景颜色:蓝色;
}

您的javascript正在工作,但您的CSS没有

你需要添加!对.bg-1、.bg-2和.bg-3的重要性如下

.bg-1 {
  background-color: red !important;
}
否则,id样式将优先于类样式


如果右键单击灰色div并选择inspect element in Chrome,您可以看到正在添加类名。

您想使用jquery.addClass()函数:

$('.myButton').addClass('myNewClass');
该函数可能如下所示:

$(function () {
     $('.thumbnail').click(function() {
         $('#box').addClass($(this).attr('id'));
     });
})

您可以将所有缩略图作为一个数组获取,然后遍历该数组,并动态地向每个缩略图添加一个事件侦听器,单击时将所需的类名添加到框中:

var thumbnails = document.getElementsByClassName('thumbnail');

Array.from(thumbnails).forEach(function(thumbnail) {
    var id = thumbnail.id;
    thumbnail.addEventListener('click', function() {
        document.getElementById('box').className = id.replace('btn', 'bg')
    });
});

不要麻烦使用类,只需使用
data-
属性,如:
data bg=“#f00”

$('[data bg]').css('background',function(){
$(this).on('click',()=>$('#box').css('background',this.dataset.bg));
返回this.dataset.bg;
});
#框{
背景:暗射线;
宽度:120px;高度:120px;
}
[数据背景]{
宽度:30px;高度:30px;
保证金:5px;
浮动:左;
}


那么你的问题是什么?什么不起作用?很抱歉,现在已经解决了如何将渐变颜色与[数据颜色]结合使用?因为我试过了,但没用!我的渐变色:背景:#7F00FF;/*旧浏览器/背景的回退:-webkit线性渐变(向右,#E100FF,#7F00FF);/Chrome 10-25,Safari 5.1-6/背景:线性渐变(向右,#E100FF,#7F00FF);/W3C、IE 10+/Edge、Firefox 16+、Chrome 26+、Opera 12+、Safari 7+*/