【发布时间】:2014-06-11 19:28:01
【问题描述】:
所以我有一个带有 li 的 ul,所有这些都分配了一个 'onclick' 事件来执行函数 Highlight():
<ul>
<li>item 1</li>
<li>item 2</li>
<li>item 3</li>
<li>item 4</li>
<li>item 5</li>
</ul>
我想要什么:我想在单击时更改单击的 li 的背景颜色以添加颜色为 rgb(160, 216, 239) 的样式,浅蓝色。然后当我再次点击它时,我想删除样式。
当前函数Highlight,结构如下:
function highlight() {
var elem = this;
if(elem.style.backgroundColor != "rgb(160, 216, 239)"){
elem.style.backgroundColor = "rgb(160, 216, 239)";
}
else{
elem.removeAttribute("style");
};
}
它在 IE9-IE10、Firefox、Chrome 和几乎所有东西中都能完美运行。它在IE8中不能完全工作,也需要支持。虽然背景确实改变了颜色,但它不会在第二次点击时再次删除样式或颜色。
有什么想法吗?
编辑:
在 CSS 中,我也有:
li:hover{
background-color: #336699;
}
【问题讨论】:
-
是否调用 elem.getAttribute("style");在 removeAttribute() 工作之前?
-
请说明您是如何绑定事件的。
-
@arnold.NET.JS 谁告诉你的?
rgb是,rgba不是 AFAIK -
console.log(elem)显示什么? -
@Barmar,我将它与 .onclick 事件绑定,因为这是唯一一个真正适用于几乎所有浏览器的事件。因此,例如,“li.onclick = highlight”; console.log(elem) 在 IE8 兼容模式下在 IE10 中返回“[object HTMLLIElement]”。
标签: javascript function internet-explorer-8 onclick