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

PHP中文网
リリース: 2016-05-16 18:40:58
オリジナル
1699 人が閲覧しました

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

<input type=&#39;text&#39; name=&#39;os&#39; value=&#39;Windows平台&#39; style=&#39;width:100px&#39; /> 
<script type="text/javascript"> 
                function osdo(str){ 
                document.getElementById("os").value=str; 
                } 
                </script> 
<input name="ostmp" type="radio" value="" onclick="osdo(&#39;&#39;)" />清空 
<input name="ostmp" type="radio" value="Windows平台" onclick="osdo(&#39;Windows平台&#39;)" /> 
Windows平台 <input name="ostmp" type="radio" value="" onclick="osdo(&#39;S60v2&#39;)" />S60v2 
<input name="ostmp" type="radio" value="" onclick="osdo(&#39;S60v3&#39;)" />S60v3 
<input name="ostmp" type="radio" value="" onclick="osdo(&#39;CHM&#39;)" />CHM 
<input name="ostmp" type="radio" value="" onclick="osdo(&#39;PDF&#39;)" />PDF 
<input name="ostmp" type="radio" value="" onclick="osdo(&#39;PPT&#39;)" />PPT 
<input name="ostmp" type="radio" value="" onclick="osdo(&#39;DOC&#39;)" />WORD 
<input name="ostmp" type="radio" value="" onclick="osdo(&#39;EXCEL&#39;)" />EXCEL
 
<input name="ostmp" type="radio" value="" onclick="osdo(&#39;asp&#39;)" />asp 
<input name="ostmp" type="radio" value="" onclick="osdo(&#39;asp+access&#39;)" />asp+access 
<input name="ostmp" type="radio" value="" onclick="osdo(&#39;asp+sqlserver&#39;)" />asp+sqlserver 
<input name="ostmp" type="radio" value="" onclick="osdo(&#39;asp+sql/access&#39;)" /> 
asp+sql/access <strong>php源码</strong> 
<input name="ostmp" type="radio" value="" onclick="osdo(&#39;php&#39;)" />php 
<input name="ostmp" type="radio" value="" onclick="osdo(&#39;php+mysql&#39;)" /> 
php+mysql<input name="ostmp" type="radio" value="" onclick="osdo(&#39;jsp&#39;)" />jsp <strong>asp.net源码</strong> 
<input name="ostmp" type="radio" value="" onclick="osdo(&#39;asp.net&#39;)" />asp.net 
<input name="ostmp" type="radio" value="" onclick="osdo(&#39;asp.net+access&#39;)" />asp.net+access 
<input name="ostmp" type="radio" value="" onclick="osdo(&#39;asp.net+sql&#39;)" />asp.net+sql 
<input name="ostmp" type="radio" value="" onclick="osdo(&#39;asp.net+sql/access&#39;)" />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"> 
运行环境: 
 

 
清空 
 
Windows平台 S60v2 
S60v3 
CHM 
PDF 
PPT 
WORD 
EXCEL
 
asp 
asp+access 
asp+sqlserver 
 
asp+sql/access php源码 
php 
 
php+mysqljsp asp.net源码 
asp.net 
asp.net+access 
asp.net+sql 
asp.net+sql/access
ログイン後にコピー

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

<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" /> 
运行环境: 
 

 
清空 
 
Windows平台 S60v2 
S60v3 
CHM 
PDF 
PPT 
WORD 
EXCEL
 
asp 
asp+access 
asp+sqlserver 
 
asp+sql/access php源码 
php 
 
php+mysqljsp asp.net源码 
asp.net 
asp.net+access 
asp.net+sql 
asp.net+sql/access
ログイン後にコピー


関連ラベル:
ie8
ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
最新の問題
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート
私たちについて 免責事項 Sitemap
PHP中国語ウェブサイト:福祉オンライン PHP トレーニング,PHP 学習者の迅速な成長を支援します!