关于document.all 遇到IE8时无法正常取到数据
最近发现项目中遇到这样一个情况,以前系统在IE6下是好的,但是在IE8下有些输入框就出现数据拿不到等情况,后来发现在IE8下有很多表达式都是不能用的,包括现在说到的documen.all.item()拿到的对象总是为空,经过仔细收集资料发现原来这个doctype有关
请看下面一个例子: <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
当你点击按钮,文本框会赋值吗?
如果你用IE6,我可以肯定的告诉你,会...
但是你如果用IE8打开,肯定是不会的...
不信可以试试。
有两个解决办法,一个是在doctype前加一句<!-- --->
另一个就是将doctype注释起来或去掉。这两个方法取得的效果是一样的,为什么呢?
在doctype前加注释语句块,可以将doctype的功能取缔,因为doctype必须位于html的第一行,放在第二行就失去了意义,第二个方法就不用说了。
如果你也有同样的问题,你可以检查一下你的jsp,很可能你在jsp中doctype不是写在第一行,但是你查看源文件,很可能doctype就在第一行出现,所以咱们以后编写html就要注意了。
为什么加了doctype就不支持了呢,首先document.all.item本身就不是w3c推出的标准,只是一个微软搞得一套东东,现在微软想在IE8中不维护这个了,所以就搞得现在不支持了。
所以咱们以后写程序一定要用w3c的标准,用document.getElementsByName()[0]代替它
。相信这个不会不支持的。
请看下面一个例子: <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
- <html>
- <head>
- <title>document.all.item test</title>
- </head>
- <body>
- <input name="12345" type="text">
- <input type="button" value="doSomething" onclick="_click()"/>
- </body>
- <script type="text/javascript">
- function _click(){
- document.all.item("12345").value = "abcdefg";
- }
- </script>
- </html>
当你点击按钮,文本框会赋值吗?
如果你用IE6,我可以肯定的告诉你,会...
但是你如果用IE8打开,肯定是不会的...
不信可以试试。
有两个解决办法,一个是在doctype前加一句<!-- --->
另一个就是将doctype注释起来或去掉。这两个方法取得的效果是一样的,为什么呢?
在doctype前加注释语句块,可以将doctype的功能取缔,因为doctype必须位于html的第一行,放在第二行就失去了意义,第二个方法就不用说了。
如果你也有同样的问题,你可以检查一下你的jsp,很可能你在jsp中doctype不是写在第一行,但是你查看源文件,很可能doctype就在第一行出现,所以咱们以后编写html就要注意了。
为什么加了doctype就不支持了呢,首先document.all.item本身就不是w3c推出的标准,只是一个微软搞得一套东东,现在微软想在IE8中不维护这个了,所以就搞得现在不支持了。
所以咱们以后写程序一定要用w3c的标准,用document.getElementsByName()[0]代替它
。相信这个不会不支持的。