对非表单元素(比如div)应用getElementById()一般是安全的,但是Opera中会有问题:
<div name="div">1</div>
<div id="div">2</div>
<script type="text/javascript">
alert(document.getElementById("div").innerHTML);
</script>
Opera连name也拿,所以拿到的innerHTML是1。
对于表单元素(比如input),Opera和IE会有同样的问题:
<input type="text" name="inputText" value="a" />
<input type="text" id="inputText" value="b" />
<script type="text/javascript">
alert(document.getElementById("inputText").value);
</script>
Opera和IE拿到的value是a。
结论:
- IE 6:对于表单元素,getElementById()返回第一个name符合或id符合的元素;
- IE 7:和IE 6相同;
- Firefox 2.0.0.8:正常;
- Opera 9.24:对于所有元素,getElementById()返回第一个name符合或id符合的元素;
- Safari 3.0.3:正常。
在制作很复杂的表单时,需要注意这个问题。id和name的命名最好要规范。