JavaScript 通过 clck 更改当前元素的颜色
JavaScript change the color of current element by clck
我有一个关于仅更改当前元素颜色的问题。所以我想通过每次点击来更改当前元素的背景颜色。
我的问题是,我无法重置上一个元素的背景颜色。
例如,我这里有两种背景颜色(黄色、浅蓝色),如果我单击"旧div"和"新div",则两个div 的背景颜色会变为绿色。但只有一个div 应设置为绿色。
因此,每次单击都必须仅更改当前元素的背景颜色。
JavaScript
var divTag = document.getElementsByTagName("div");
for (var i = 0; i < divTag.length; i++) {
if (divTag[i].tagName == "DIV" || divTag[i].tagName == "div") {
if (divTag[i].addEventListener) {
divTag[i].addEventListener('click', callback,false);
}
else if (divTag[i].attachEvent) {
divTag[i].attachEvent('on' + 'click',callback);
}
}
}
function callback(e) {
e = e || window.event;
var target = e.target || e.srcElement;
target.style.backgroundColor = "green";
e.stopPropagation();
}
.HTML
<div id="old">
<input style="margin: 10px;" type="textbox" />
<div id="new"></div>
</div>
.CSS
#old {
width:200px;
height:200px;
background-color:yellow;
}
#new{
width:20px;
height:20px;
background-color:lightblue;
}
你可以帮我吗?提前致谢
如果您担心性能,可以保存以前的背景颜色并将其背景颜色重置为正常颜色。
var prevDiv = null;
function callback(e) {
e = e || window.event;
var target = e.target || e.srcElement;
if(prevDiv) {
prevDiv.style.backgroundColor = '';
}
target.style.backgroundColor = 'green';
prevDiv = target;
e.stopPropagation();
}
http://jsfiddle.net/v6d6veyv/
单击一个时重置所有其他div 的背景颜色。
var divs = document.getElementsByTagName("div");
for(var i = 0; i < divs.length; i++){
divs[i].style.backgroundColor = '';
}
http://jsfiddle.net/4uosvc75/
相关文章:
- 使用ngRepeat中的Angular动态更改元素颜色
- 在模式框打开之前更改 SVG 元素的颜色,并在框打开时保持该颜色
- Extjs 树 如何更改子元素的文本颜色
- 我需要在javascript if语句中使用jquery来动画元素的颜色
- 更改不同元素的颜色
- 我怎样才能随机化 HTML 元素的颜色属性
- 在自定义坐标处获取RaphaelJS元素的颜色填充
- 边距和输入元素边框之间的填充颜色
- 更改整个页面上不同元素的颜色
- 使元素单独更改颜色
- 单击时更改元素的颜色
- 使用单选按钮更改 HTML 元素的颜色
- 将输入 html 元素动态关联到颜色选取器
- 更改元素父元素的背景颜色时停止在
上闪烁鼠标悬停?jQuery/JS. - 获取动态背景颜色,使用 LESS 应用于单独的元素
- 如何为 svg 元素提供 hsl 颜色值
- 如何在每次滚动时更改元素颜色
- 单击以更改元素颜色
- 动态改变元素颜色的最佳方法
- Javascript改变元素颜色/ PHP变量