又被IE强奸了一次,MMD

貌似沉寂了很久了,不过今天还是打算抽空讨伐一下万恶的IE

问题是这样的:

有这么一个页面:

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">

<HTML>

<HEAD>

<TITLE> New Document </TITLE>

</HEAD>

<BODY>

<form name="f1">

<input type="text" name="n1" value="input 1" />

</form>

<form name="f2">

<input type="text" name="n2" id="n1" value="input 2" />

</form>

<script type="text/javascript">

alert(document.getElementById("n1").value);

</script>

</BODY>

</HTML>

猜猜看,下面的js会输出什么?

按照常规的思路,首先,根据getElementById("n1")去寻找id为n1的对象,自然找到了名字为f2的form内id为n1的input框,它的值为input 2,自然alert语句会弹出“input 2”字样的提示框。

事实上呢?IE给你弹出了input 1!!

因为,伟大的IE把id和name混淆了……

解决方案:

<font face="NSimsun">1.保证没有不同的元素身上有相同得name和id</font>

<font face="NSimsun">2.用一段script搞定&gt;</font><font face="NSimsun">overriding IE&rsquo;s native getElementById method-》地址是:</font>

<font face="NSimsun">[http://www.sixteensmallstones.org/ie-javascript-bugs-overriding-internet-explorers-documentgetelementbyid-to-be-w3c-compliant-exposes-an-additional-bug-in-getattributes](http://www.sixteensmallstones.org/ie- -bugs-overriding-internet-explorers-documentgetelementbyid-to-be-w3c-compliant-exposes-an-additional-bug-in-getattributes)</font>

<font face="NSimsun">不要直接点上面的链接,伟大的baidu把javascript字样的给过滤了。要复制到地址栏才行。</font>

否则,你就等着被IE搞的欲死欲仙吧![](http://img.baidu.com/hi/tsj/t_0008.gif)

加载评论框需要翻墙