JavaScript通过修改当前元素的颜色
我有一个关于只改变当前元素的颜色的问题。 所以我想每次点击改变当前元素的背景颜色。JavaScript通过修改当前元素的颜色
我的问题是,我无法重置前一个元素的背景颜色。
对于一个例子,我这里有两个背景颜色(黄色,lightblue),如果我的“老格”和“新格”点击,比两个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();
}
重置所有其他的div的背景颜色,当你点击一个。
var divs = document.getElementsByTagName("div");
for(var i = 0; i < divs.length; i++){
divs[i].style.backgroundColor = '';
}
感谢您的回答,但我有很多的div在我的网页,如果我重置的div的所有背景颜色,它可以降低服务表现还是我想错了吗? – aldimeola1122 2014-11-20 16:56:30
这也是非常有益的感谢 – aldimeola1122 2014-11-21 15:32:02
谢谢你是完美的;) – aldimeola1122 2014-11-21 15:31:37