javascript - 通过鼠标单击存储 div 背景颜色并在单击时将其释放到另一个 div
问题描述
我/已经为这个问题苦苦挣扎了几天,尝试了几种不同的场景,但没有运气。
目标是从 2 个小的彩色左侧立方体(请参阅小提琴)中选择/存储背景颜色,并在单击右侧的任何框(基本上是 2x2 - 画布)后释放它
我尝试了 3 个相似但略有不同的 JS 代码,所以我将发布所有 3 个,如果这违反规则,我将编辑为仅 1 个。
对于 html 和 css,请打开小提琴链接https://jsfiddle.net/Husky931/cvhoz2af/
在纯 JS 中回答帮助,感谢没有库。
试一试
function setColor() {
var x = document.getElementById('red').style.backgroundColor;
localStorage.setItem('bgcolor', x);
}
function getColor() {
var y = document.getElementById('r1b1').style.backgroundColor;
localStorage.getItem('bgcolor');
}
尝试 2
var pickRed = document.getElementById('red');
pickRed.addEventListener("click", function() {
var redOn = pickRed.style.backgroundColor;
localStorage.setItem('bgcolor', redOn);
var releaseRed = document.getElementById('r1b1');
releaseRed.addEventListener('click', function() {
var inside = releaseRed.style.backgroundColor;
inside = localStorage.getItem('bgcolor');
});
})
尝试 3
var selectRed = document.getElementById('red');
selectRed.addEventListener("click", function deployColor() {
var storeRed = selectRed.style.backgroundColor;
localStorage.setItem('bgcolor', selectRed);
var selectR1B1 = document.getElementById('r1b1');
selectR1B1.addEventListener("click", function() {
if (!localStorage.getItem('bgcolor')) { // if (!selectR1B1.style.background =='red')
selectR1B1.style.backgroundColor = storeRed; // selectR1B1.style.backgroundColor == 'red';
}
else {
deployColor();
}
})
})
解决方案
这就是你所需要的:
<div id="field">
<div id="leftPalette">
<div class="paintingCubes" id="red" onclick="localStorage.bgcolor = 'red'"></div>
<div class="paintingCubes" id="blue" onclick="localStorage.bgcolor = 'blue'"></div>
</div>
<div id="canvas">
<div id="row1">
<div id="r1d1" onclick="this.style.backgroundColor = localStorage.bgcolor"></div>
<div id="r1d2" onclick="this.style.backgroundColor = localStorage.bgcolor"></div>
</div>
<div id="row2">
<div id="r2d1" onclick="this.style.backgroundColor = localStorage.bgcolor"></div>
<div id="r2d2" onclick="this.style.backgroundColor = localStorage.bgcolor"></div>
</div>
</div>
<div id="clear"></div>
</div>
https://jsfiddle.net/0hofvL4j/2/
这是你可以得到的最直接的东西,但不是你能看到的最干净的。
然后,您应该通过将 javascript 放入您的 javascript 文件中进行清理。
推荐阅读
- flutter - 建议在列表中多次使用 where(),Dart?
- javascript - 无法模拟触摸事件移动设备
- node.js - NVM:结合版本节点 12.18.0 与 npm 7
- python - 如何只显示列表中的最后一个 x 值?
- postgresql - 从 1970 年到 2016 年,有多少次获胜的球队也赢得了世界大赛?多少百分比的时间?
- python - 通过将列表与另一个列表进行比较来更改列表中的顺序
- r - 如何从稀疏矩阵中获取行列对
- javascript - 在所有情况下都执行 switch case 中的默认值
- google-chrome - 最后一次触摸智能手机
- docker - 将 JMeter 插件与 justb4/jmeter Docker 映像一起使用会导致错误