如何解决以下错误。应该将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
答案 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
而不是embed
。 This 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>