0

下面显示的 html 代码(带有 javascript)适用于除 IE 之外的所有浏览器。

我最近了解到 IE 不想处理 getElementById 和 id 代码。

有人这么好心给我建议吗,还有其他方法可以让它工作还是有解决方法代码?

在此先感谢,埃里克

<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> 
4

3 回答 3

2

el.removeAttribute("class");

那是行不通的。避免在 IE 中使用 getAttribute/setAttribute/removeAttribute,它们没有得到适当的支持。版本 8 之前的 IE 将属性访问与 JS 对象属性访问混淆,当属性命名不同(类与类名)或属性类型不同(属性始终为字符串的布尔或整数属性)时,会导致混淆错误。

更好的(更具可读性和跨浏览器兼容)是使用 DOM HTML 属性:

el.className= '';

<a href="#" id="index_100" name="index_100"

a元素上不需要'id''name';只需自行设置“id”。

于 2009-08-24T15:44:10.350 回答
1

您正在尝试使用 setAttribute() 来设置“类”。虽然这在技术上是完全有效的,但IE 有一个 setAttribute() 的错误并且不会设置它。

将其用于 IE

el.setAttribute("className", colors[i%1]);
于 2009-08-24T15:29:51.167 回答
0

<a>元素甚至需要名称属性吗?

如果没有,那么您可能最好没有它们,以减少“噪音”因素。

但是,问题可能是标记的查找器详细信息是由某种框架(Struts、ASP.NET)生成的——您无法控制是否获得名称属性。

于 2009-08-24T15:11:10.043 回答