如何解决下面的错误。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(兼容; windows NT 5.1操作系统三叉戟/4.0 NET语言开发工具3.0.04506.648; . NET语言3.5.21022; . NET核心语言2.0.50727; . NET核心语言3.0.4506.2152; . NET语言核心语言3.5.30729;信息路径2 FDM)时间戳:世界协调时2010年12月29日星期三14:22:09
消息:"undefined"为空或不是对象
3条答案
按热度按时间0kjbasz61#
您可以在此处更正以下几点:
1)不要使用
eval
查找属性变成
2)但是,如果某个对象有
id
,则使用document.getElementById
查找它,因此:3)在事件处理程序属性上不使用
javascript:
前缀,因此变成
(尽管这个协议基本上是无害的,但它只是定义了一个您从未使用过的标签)(您只在链接属性上使用
javacript:
伪协议,如href
)。更新:您指出上述问题均未解决,因此:
4)
sound1
真的独一无二吗?页面上还有其他名为“sound 1”的 * 任何东西 * 吗?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
,但在此特定情况下,它不会为您带来任何好处。fnvucqvd2#
尝试使用
而不是文档. soundobj
huus2vyu3#
试试这个: