IE中JS变量名不能与HTML页中ID名同名
发布时间:2007-4-4 9:24:28
这种情况只出现在IE中,在OP/FF中均无此错误,当js中定义一个变量或对象名与该文档(HTML页)中定义的ID名同名时,js中只要该变量或对象赋予其它值或对象时,IE就会报错,报错内容为:不支持该对象的该属性或方法.
例如下面这段程序就会在IE中报错:
<script type='text/javascript'>
sss=document.getElementById("sss").innerHTML;//在IE中会报错,而OP/FF中均无错,就算放到函数中也照样报错
</script>
<div id="sss"></div>
但如果定义的变量或对象指向文档ID对象自身就不会报错,如把上面程序改成如下:
<script type='text/javascript'>
sss=document.getElementById("sss");//等于对象本身时不会报错
</script>
<div id="sss"></div>
在IE中,文档ID对象可以作为js对象在js中使用,如:
<script type='text/javascript'>
aa=sss.innnerHTML;//IE中可以直接作为js定义对象引用,不需再在JS中定义
</script>
<div id="sss"></div>
明白了原因之后就比较好做了,只要更改文档ID名或js中变量或对象名就OK了,一般我会修改js中的变量或对象名,如修改成以下:
<script type='text/javascript'>
aa=document.getElementById("sss").innerHTML;//换一个变量名,为了不出现在OP/FF中出现错误,文档ID所指向的对象还是重新获取,不直接使用ID名作为对象
</script>
<div id="sss"></div>