IE中很无语的JavaScript bug
2009 2 5 12:11 AM 1434次查看
分类:JavaScript 标签:JavaScript
和作者一样,我也只有IE 6.0,第一个我运行正常,后两个确实有误。
一、document.getElementById方法执行有误
当元素为控件(input、textarea和select等)时,document.getElementById方法会先以name属性从上至下查找,找不到时才会以id进行查找。例如:
<input id="2" name="1">
<input id="1" name="2">
<script type="text/javascript">
//<![CDATA[
alert(document.getElementById("1").id);
//]]>
</script>
返回结果是2,而不是1。作者给出了解决办法,我就不抄袭了。不过最佳的解决办法还是让id和name保持一致且唯一。
二、通过select节点的innerHTML设置下拉节点无效
所有对select节点的innerHTML属性的赋值,都相当于将该属性清空。
<select id="1">
<option>1</option>
</select>
<select id="2">
<option>2</option>
</select>
<script type="text/javascript">
//<![CDATA[
var s1 = document.getElementById("1");
var s2 = document.getElementById("2");
//s2.innerHTML = s1.innerHTML; //这句实际上相当于s2.innerHTML = "",这就是bug所在
//用下面的方法才能设置
s2.outerHTML = s2.outerHTML.replace(/(<\/select>)/i, s1.innerHTML + "</select>");
//]]>
</script>
向下滚动可载入更多评论,或者点这里禁止自动加载。