最佳浏览:800*600像素IE6/Opera8/Firefox2及以上
banner
本站动态
本站搜索

关 键 词
搜索范围

网上调查

网站用什么布局好?
表格布局
纯CSS的div布局
div+table
根据情况而定

广告推广区
IE中JS变量名不能与HTML页中ID名同名
发布时间:2007-4-4 9:24:28



Google

   这种情况只出现在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>