【发布时间】:2018-10-16 22:20:48
【问题描述】:
我有 3 个 div 作为颜色可供选择,还有 3 个空白 div。我想让用户能够:
(1) 点击一个彩色的 div,然后点击一个空白的 div,然后空白的 div 被着色为用户选择的颜色。而且代码似乎可以工作。
(2) 我希望用户能够再次单击彩色空白 div 并使其变为白色。而且代码似乎可以工作。
问题是,如果空白 div 是彩色的,而用户选择另一种颜色并再次单击彩色空白 div,则会将新的颜色类添加到 div 中,事情变得不可预测。可以打开控制台,跟踪空白div类的乱七八糟的变化。
我该如何解决这个问题?我只希望空白 div 在两个类之间切换。
var chosenColor;
function pickColor(arg){
chosenColor=arg.id;
}
function draw(id){
document.getElementById(id).classList.toggle("white");
document.getElementById(id).classList.toggle(chosenColor);
}
.box{
width: 100px;
height: 100px;
border: 1px solid black;
display: inline-block;
}
.red{background: red}
.blue{background: blue;}
.yellow{background: yellow;}
.white{background: white;}
<html>
<body>
<div class="box red" id="red" onclick="pickColor(this)">1</div>
<div class="box blue" id="blue" onclick="pickColor(this)">2</div>
<div class="box yellow" id="yellow" onclick="pickColor(this)">3</div>
<br><br>
<div class="box white" id="4" onclick="draw(4)">4</div>
<div class="box white" id="5" onclick="draw(5)">5</div>
<div class="box white" id="6" onclick="draw(6)">6</div>
</body>
</html>
【问题讨论】:
-
所以你想让彩色的空白 div 再次变白,即使用户在两者之间选择了另一种颜色?
-
是的,某些性能的答案正是我想要的
标签: javascript css