IE中很无语的JavaScript bug

标签:JavaScript

原文:http://blog.csdn.net/cityhunter172/archive/2009/02/04/3862009.aspx

和作者一样,我也只有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>

1条评论 你不来一发么↓ 顺序排列 倒序排列

    向下滚动可载入更多评论,或者点这里禁止自动加载

    想说点什么呢?