首页 > web前端 > js教程 > 正文

JS代码在ie8里报错document.getElementById(...)为空或不是对象的解决方法

PHP中文网
发布: 2016-05-16 18:40:58
原创
1966人浏览过

ie8中对于声明文档类型更加严格如下面的代码。

<input type='text' name='os' value='Windows平台' style='width:100px' /> 
<script type="text/javascript"> 
                function osdo(str){ 
                document.getElementById("os").value=str; 
                } 
                </script> 
<input name="ostmp" type="radio" value="" onclick="osdo('')" />清空 
<input name="ostmp" type="radio" value="Windows平台" onclick="osdo('Windows平台')" /> 
Windows平台 <input name="ostmp" type="radio" value="" onclick="osdo('S60v2')" />S60v2 
<input name="ostmp" type="radio" value="" onclick="osdo('S60v3')" />S60v3 
<input name="ostmp" type="radio" value="" onclick="osdo('CHM')" />CHM 
<input name="ostmp" type="radio" value="" onclick="osdo('PDF')" />PDF 
<input name="ostmp" type="radio" value="" onclick="osdo('PPT')" />PPT 
<input name="ostmp" type="radio" value="" onclick="osdo('DOC')" />WORD 
<input name="ostmp" type="radio" value="" onclick="osdo('EXCEL')" />EXCEL
 
<input name="ostmp" type="radio" value="" onclick="osdo('asp')" />asp 
<input name="ostmp" type="radio" value="" onclick="osdo('asp+access')" />asp+access 
<input name="ostmp" type="radio" value="" onclick="osdo('asp+sqlserver')" />asp+sqlserver 
<input name="ostmp" type="radio" value="" onclick="osdo('asp+sql/access')" /> 
asp+sql/access <strong>php源码</strong> 
<input name="ostmp" type="radio" value="" onclick="osdo('php')" />php 
<input name="ostmp" type="radio" value="" onclick="osdo('php+mysql')" /> 
php+mysql<input name="ostmp" type="radio" value="" onclick="osdo('jsp')" />jsp <strong>asp.net源码</strong> 
<input name="ostmp" type="radio" value="" onclick="osdo('asp.net')" />asp.net 
<input name="ostmp" type="radio" value="" onclick="osdo('asp.net+access')" />asp.net+access 
<input name="ostmp" type="radio" value="" onclick="osdo('asp.net+sql')" />asp.net+sql 
<input name="ostmp" type="radio" value="" onclick="osdo('asp.net+sql/access')" />asp.net+sql/access
登录后复制

可以看到这段代码在ie7与ie8中都是可以运行的,下面的代码我们加入声明文档

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
登录后复制

加了上面的文档类型声明。

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> 
运行环境: 
<input type='text' name='os' value='Windows平台' style='width:100px' /> 

<script type="text/javascript"> 
                function osdo(str){ 
                document.getElementById("os").value=str; 
                } 
                </script> 
<input name="ostmp" type="radio" value="" onclick="osdo('')" />清空 
<input name="ostmp" type="radio" value="Windows平台" onclick="osdo('Windows平台')" /> 
Windows平台 <input name="ostmp" type="radio" value="" onclick="osdo('S60v2')" />S60v2 
<input name="ostmp" type="radio" value="" onclick="osdo('S60v3')" />S60v3 
<input name="ostmp" type="radio" value="" onclick="osdo('CHM')" />CHM 
<input name="ostmp" type="radio" value="" onclick="osdo('PDF')" />PDF 
<input name="ostmp" type="radio" value="" onclick="osdo('PPT')" />PPT 
<input name="ostmp" type="radio" value="" onclick="osdo('DOC')" />WORD 
<input name="ostmp" type="radio" value="" onclick="osdo('EXCEL')" />EXCEL
 
<input name="ostmp" type="radio" value="" onclick="osdo('asp')" />asp 
<input name="ostmp" type="radio" value="" onclick="osdo('asp+access')" />asp+access 
<input name="ostmp" type="radio" value="" onclick="osdo('asp+sqlserver')" />asp+sqlserver 
<input name="ostmp" type="radio" value="" onclick="osdo('asp+sql/access')" /> 
asp+sql/access <strong>php源码</strong> 
<input name="ostmp" type="radio" value="" onclick="osdo('php')" />php 
<input name="ostmp" type="radio" value="" onclick="osdo('php+mysql')" /> 
php+mysql<input name="ostmp" type="radio" value="" onclick="osdo('jsp')" />jsp <strong>asp.net源码</strong> 
<input name="ostmp" type="radio" value="" onclick="osdo('asp.net')" />asp.net 
<input name="ostmp" type="radio" value="" onclick="osdo('asp.net+access')" />asp.net+access 
<input name="ostmp" type="radio" value="" onclick="osdo('asp.net+sql')" />asp.net+sql 
<input name="ostmp" type="radio" value="" onclick="osdo('asp.net+sql/access')" />asp.net+sql/access
登录后复制

发现 提示document.getElementById(...) 为空或不是对象的解决方法
如果页面中既有文档声明,因为用div+css布局的时候,声不声明文档,页面的一些地方都不一样。
可以在head中添加下面的代码

代码小浣熊
代码小浣熊

代码小浣熊是基于商汤大语言模型的软件智能研发助手,覆盖软件需求分析、架构设计、代码编写、软件测试等环节

代码小浣熊 51
查看详情 代码小浣熊
<meta http-equiv="X-UA-Compatible" content="IE=EmulateIE7" />
登录后复制

完整的代码

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> 

<meta http-equiv="X-UA-Compatible" content="IE=EmulateIE7" /> 
运行环境: 
<input type='text' name='os' value='Windows平台' style='width:100px' /> 

<script type="text/javascript"> 
                function osdo(str){ 
                document.getElementById("os").value=str; 
                } 
                </script> 
<input name="ostmp" type="radio" value="" onclick="osdo('')" />清空 
<input name="ostmp" type="radio" value="Windows平台" onclick="osdo('Windows平台')" /> 
Windows平台 <input name="ostmp" type="radio" value="" onclick="osdo('S60v2')" />S60v2 
<input name="ostmp" type="radio" value="" onclick="osdo('S60v3')" />S60v3 
<input name="ostmp" type="radio" value="" onclick="osdo('CHM')" />CHM 
<input name="ostmp" type="radio" value="" onclick="osdo('PDF')" />PDF 
<input name="ostmp" type="radio" value="" onclick="osdo('PPT')" />PPT 
<input name="ostmp" type="radio" value="" onclick="osdo('DOC')" />WORD 
<input name="ostmp" type="radio" value="" onclick="osdo('EXCEL')" />EXCEL
 
<input name="ostmp" type="radio" value="" onclick="osdo('asp')" />asp 
<input name="ostmp" type="radio" value="" onclick="osdo('asp+access')" />asp+access 
<input name="ostmp" type="radio" value="" onclick="osdo('asp+sqlserver')" />asp+sqlserver 
<input name="ostmp" type="radio" value="" onclick="osdo('asp+sql/access')" /> 
asp+sql/access <strong>php源码</strong> 
<input name="ostmp" type="radio" value="" onclick="osdo('php')" />php 
<input name="ostmp" type="radio" value="" onclick="osdo('php+mysql')" /> 
php+mysql<input name="ostmp" type="radio" value="" onclick="osdo('jsp')" />jsp <strong>asp.net源码</strong> 
<input name="ostmp" type="radio" value="" onclick="osdo('asp.net')" />asp.net 
<input name="ostmp" type="radio" value="" onclick="osdo('asp.net+access')" />asp.net+access 
<input name="ostmp" type="radio" value="" onclick="osdo('asp.net+sql')" />asp.net+sql 
<input name="ostmp" type="radio" value="" onclick="osdo('asp.net+sql/access')" />asp.net+sql/access
登录后复制
最佳 Windows 性能的顶级免费优化软件
最佳 Windows 性能的顶级免费优化软件

每个人都需要一台速度更快、更稳定的 PC。随着时间的推移,垃圾文件、旧注册表数据和不必要的后台进程会占用资源并降低性能。幸运的是,许多工具可以让 Windows 保持平稳运行。

下载
来源:php中文网
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
作者最新文章
最新问题
开源免费商场系统广告
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新 English
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送
PHP中文网APP
随时随地碎片化学习

Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号