IE网页上的JS错误

时间:2010-12-29 14:24:04

标签: javascript javascript-events

如何解决以下错误。应该将div设置为??

 <script>

 function EvalSound(soundobj) {

  var thissound= eval("document."+soundobj);
  thissound.Play();
 }
 </script>


  <div id="s_player" style="display:block;width:620px;height:53px;">
  <embed src="/media/a.wav" autostart=false width=0 height=0 id="sound1" enablejavascript="true">

                                   <a href="#" onclick="javascript:EvalSound('sound1');">   <b>Play test sound</b></a></td>
                    </div>

错误 网页错误详情

用户代理:Mozilla / 4.0(兼容; MSIE 8.0; Windows NT 5.1; Trident / 4.0; GTB6.6; .NET CLR 3.0.04506.648; .NET CLR 3.5.21022; .NET CLR 2.0.50727; .NET CLR 3.0.4506.2152; .NET CLR 3.5.30729; InfoPath.2; FDM) 时间戳:2010年12月29日星期三14:22:09 UTC

Message: 'undefined' is null or not an object

3 个答案:

答案 0 :(得分:2)

你可以纠正几件事:

1)不要使用eval来查找属性

var thissound= eval("document."+soundobj);

变为

var thissound= document[soundobj];

2)但是,如果某个内容有id,请使用document.getElementById进行查找,以便:

var thissound = document.getElementById(soundobj);

3)您不在事件处理程序属性上使用javascript:前缀,因此

<a href="#" onclick="javascript:EvalSound('sound1');">

变为

<a href="#" onclick="EvalSound('sound1');">

(虽然那个很大程度上是无害的,但它只是定义了一个你从不使用的标签)。 (您只对链接属性使用javacript:伪协议,例如href。)

更新:您已经表明以上都没有这样做,所以:

4)sound1 真的唯一吗?

你在名为“sound1”的页面上有其他吗? IE与mixing together namespaces存在问题。即使只是在页面范围内具有该名称的变量也可能导致问题。

进一步更新

5)你可以在IE中使用embed吗?

我不确定你能不能,我认为IE需要object而不是embedThis page对于IE中的播放声音很有意思,看起来IE可能有一个内置的脚本来加载这样的对象;查看脚本的内容可能会帮助您弄清楚您需要做什么。

X)走过它

最好的解决方法是使用调试器来浏览代码(IE8内置了开发工具,或者您可以使用VS.Net的免费版本)。这将帮助您缩小问题所在。它听起来(没有双关语)好像没有找到sound1元素,但实际上,它可能是几件事中的任何一个。如果没有找到该元素,我的猜测是#5是罪魁祸首。


可能偏离主题:您已标记了问题jquery。如果你真的使用jQuery,你可能会比现在看起来更多地使用它。例如,您可以使用jQuery设置事件处理程序而不是使用onclick,这是非常老式的,您可以使用jQuery而不是document.getElementById,尽管在这种特定情况下它不会买你什么。

答案 1 :(得分:0)

尝试使用

document.getElementByID(soundobj)

而不是document.soundobj

答案 2 :(得分:0)

试试这个:

<script>

 function EvalSound(soundobj) {

  var thissound= document.getElementById(soundobj);
  thissound.Play();
 }
 </script>