单击时使用Javascript更改CSS颜色(addEventListener)
Change CSS color with Javascript on click (addEventListener)
好吧,我有这个div,我希望它在点击时变成红色。最初它应该显示为黑色。如果你对这个代码进行测试,你会发现一旦你加载页面,它就会变成红色。
如果我去掉click1功能上的参数,它会很好。。。它最初仍然不会是黑色的,但当你点击它时,它至少会变成红色
我在click1上有一个参数,用于将来节省代码行。因为这个代码最终是用来处理多个正方形的。我希望能够用JavaScript更改方块的颜色。我需要它能够区分每个正方形。这样它只会更改您单击的正方形的颜色。我不想为每个方块都做一个新的函数。这就是为什么我把它设置成这样。
所有的HTML、CSS和Javascript都在这里。(提前感谢大家。被代码卡住和沮丧并不有趣。我不知道如果没有这个社区我会怎么做。我只希望我能贡献尽可能多的资源。)
<body>
<div class="border">
<div id="box1" style="width: 100px; height: 100px; backgroundColor: #000000;">
</div>
</div>
<script type="text/javascript">
var colorcheck = "#cccccc";
function click1(blockid) {
document.getElementById("box" + blockid).style.backgroundColor = '#ff0000';
colorcheck = document.getElementById("box1").style.backgroundColor;
console.log(colorcheck);
console.log("box" + blockid);
};
document.getElementById("box1").addEventListener("click", click1(1));
</script>
</body>
如果您想在addEventListener
中传递参数,您必须修改您的代码,如下所示。
document.getElementById("box1").addEventListener("click", function(){click1(1);}, false);
DEMO
我认为您应该给函数引用,而不是在那里执行函数:
document.getElementById("box1").addEventListener("click", click1);
//-------------------------------------------------------------^
不要在那里"调用"函数。
试试这个。。
$('#box1').click(function(){
$('.border #box1').css('background-color', 'red').css('color', 'red');
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js"></script>
<div class="border">
<div id="box1" style="width: 100px; height: 100px; backgroundColor: #000000;">
</div>
正如其他人已经提到的,您的第二个addEventListener
参数中存在问题。
你可以看看这个例子:
var colorcheck = "#cccccc";
function click1() {
document.getElementById(this.id).style.backgroundColor = '#ff0000';
colorcheck = document.getElementById("box1").style.backgroundColor;
console.log(colorcheck);
console.log(this.id);
};
document.getElementById("box1").addEventListener("click", click1);
<div class="border">
<div id="box1" style="width: 100px; height: 100px; background-color: #000000;"></div>
</div>
PS:看看box1的样式属性。是background-color
而不是backgroundColor
。第二个仅适用于JavaScript。
正如我所评论的,document.getElementById("box1").addEventListener("click", click1(1))
是个问题。此外,您可以使用this
来代替传递数字click1(1)
。
你可以试试这样的东西:
代码
var colorcheck = "#cccccc";
function click1(blockid) {
var self = this;
self.style.backgroundColor = '#ff0000';
colorcheck = self.style.backgroundColor;
console.log(colorcheck);
console.log("box" + blockid);
};
function registerEvents(){
var box = document.getElementsByClassName("box");
for(var i = 0; i<box.length; i++){
box[i].addEventListener("click", click1);
}
}
registerEvents();
.box {
width: 100px;
height: 100px;
background: black;
margin:5px;
}
<body>
<div class="border">
<div id="box1" class="box"></div>
<div id="box2" class="box"></div>
</div>
</body>
您可以在div 上单击
<div id="box1" style="width: 100px; height: 100px; backgroundColor: #000000;" onclick="click1(1)">
并从脚本中删除自动绑定器:
document.getElementById("box1").addEventListener("click", click1(1));
或者你可以使用jQuery,whitch使用起来更优雅:
下面是一个例子
$('body').on('click', '.box', function() {
var caller = $(this);
if(caller.hasClass('select-box') == true) {
caller.removeClass('select-box');
} else {
caller.addClass('select-box');
}
});
您只需要在HTML中添加点击事件
<div onclick="click1()" id="box1" style="width: 100px; height: 100px; backgroundColor: #000000;">
并删除document.getElementById("box1").addEventListener("click", click1(1));
- 使用JS如何动态更改显示的html文件中的文本背景颜色
- 高亮显示时编辑文本大小和颜色
- 用与线条相同的颜色填充多折线图上的点
- 更改使用Chart.js创建的图表中的轴线颜色
- 如何使用jquery更改html中的背景颜色
- 动态更改高图中的系列颜色
- jsf中两个字符串的颜色代码差异
- 我们如何使用css或JavaScript在i/j上更改句点(点)的颜色
- d3.hexbin插件-动态定义颜色域以适应数据
- 我如何制作一个JS函数,它可以从相似的原始颜色双向更改为某个颜色
- 每个选择器的Jquery css颜色都在变化,但字体大小却没有变化
- Javascript对象类在单击时打开窗口进行颜色选择,并在更改时替换对象背景颜色
- jQuery动画-边框宽度和颜色
- JS幻灯片与CSS背景颜色变化
- 使用CSS/JavaScript更改剑道图工具提示文本颜色
- 使用Angular单击时更改特定图示符图标的颜色
- 如何使用D3生成特定范围内的随机颜色
- 比较javascript中的浮动并更改最高浮动的颜色
- 改变所有<td>为特定的桌子点击颜色
- 如何获得随机灯光颜色