下面显示的html代码(使用javascript)适用于除IE之外的所有浏览器。
我最近了解到IE不想处理getElementById和id代码。
有人如此友善地告诉我,是否有另一种方法可以使其工作或是否有解决方法代码?
提前致谢,Erik
<html>
<head>
<meta http-equiv="content-type" content="text/html; charset=utf-8" />
<meta http-equiv="X-UA-Compatible" content="IE=8" />
<title>test</title>
<script type="text/javascript">
<!--
var color = new Object();
color["100"] = new Array("300", "400");
color["200"] = new Array("100", "300", "400");
color["300"] = new Array("100", "200");
color["400"] = new Array("200");
var colors = new Array("related");
function on(id)
{
for (var i=0; i<color[id].length; i++)
{
var el = document.getElementById("index_"+color[id][i]);
if (el)
{
el.setAttribute("class", colors[i%1]);
}
}
}
function off(id)
{
for (var i=0; i<color[id].length; i++)
{
var el = document.getElementById("index_"+color[id][i]);
if (el)
{
el.removeAttribute("class");
}
}
}
//-->
</script>
<style type="text/css">
<!--
body {
font-family: Arial, Helvetica, sans-serif;
font-size: 14px;
line-height: 18px;
color: #000000;
text-decoration: none;
}
a:link,
a:visited {
color: #000000;
text-decoration: none;
}
a:hover,
a:active {
color: #FF0000;
text-decoration: underline;
}
a.related {
color: #FF0000;
text-decoration: none;
}
-->
</style>
</head>
<body>
<a href="#" id="index_100" name="index_100" onMouseOver="on(100)" onMouseOut="off(100)">aaa</a><br />
<br />
<a href="#" id="index_200" name="index_200" onMouseOver="on(200)" onMouseOut="off(200)">bbb</a><br />
<br />
<a href="#" id="index_300" name="index_300" onMouseOver="on(300)" onMouseOut="off(300)">ccc</a><br />
<br />
<a href="#" id="index_400" name="index_400" onMouseOver="on(400)" onMouseOut="off(400)">ddd</a>
</body>
</html>
答案 0 :(得分:2)
el.removeAttribute( “类”);
那不行。避免在IE中使用getAttribute / setAttribute / removeAttribute,它们不受适当支持。版本8之前的IE将属性访问与JS对象属性访问混淆,导致在属性命名不同时出现混淆错误(class vs className)或属性类型不同(boolean或integer属性,其中属性始终为string)。 / p>
更好(更具可读性和跨浏览器兼容性)是使用DOM HTML属性:
el.className= '';
&lt; a href =“#”id =“index_100”name =“index_100”
a-elements上不需要'id'和'name';只需设置'id'就可以了。
答案 1 :(得分:1)
您正在尝试使用setAttribute()来设置“类”。虽然这在技术上完全有效,IE has a bug with setAttribute()并且不会设置它。
将此用于IE
el.setAttribute("className", colors[i%1]);
答案 2 :(得分:0)
<a>
元素甚至需要名称属性吗?
如果没有,那么没有它们你可能会更好,减少'噪音'因素。
然而,问题可能是标记的查找程序细节是由某种框架(Struts,ASP.NET)生成的 - 并且您无法控制是否获得名称属性或不