使用JavaScript访问getElementById出现问题

3
我能翻译中文。以下是您需要翻译的内容:

我有这段代码,但不知道为什么它不能正常工作。

<html>
<head>
<title>Test</title>
<script type="text/javascript">
function StopBackgroundMusic()
{
var MusicObj = document.getElementById("BackgroundMusic");

MusicObj.data = "http://www.oreillynet.com/examples/oreilly/digitalmedia/2005/02/ableton_intro_0205_gtr.mp3";
MusicObj.autoplay = "false";
MusicObj.autostart = "false";


return MusicObj;
}
</script>
</head>
<body>


<OBJECT ID="BackgroundMusic" data="http://www.oreillynet.com/examples/oreilly/digitalmedia/2005/02/ableton_intro_0205_gtr.mp3" TYPE="audio/mpeg" height="0" width="0">
<PARAM NAME="autostart" VALUE="true">
<PARAM NAME="autoplay" VALUE="true">

</OBJECT>

<form> 


<input type='button' onclick='StopBackgroundMusic()' value='Stop music'/>

</form> 
</body>
</html>

1
如果您能具体说明问题,而不仅是说这个“不能运行”,那将会非常有帮助。 - Pointy
1
你为什么认为在OBJECT元素中添加autoplayautostart属性会有任何效果? - Šime Vidas
为什么将自动启动或自动播放切换为false会停止当前正在播放的音乐? - Phil
我尝试停止歌曲,但没有任何效果。 - joni
2个回答

3

尝试将数据设置为null,而不是再次设置音乐URL。

另一种选择是在按下停止按钮时删除对象节点:

function StopBackgroundMusic()
{
    var MusicObj = document.getElementById("BackgroundMusic");
    MusicObj.parentNode.removeChild(MusicObj);
}

@joni:那就尝试移除整个对象吧。我从未使用过对象标签来播放音频,但我95%确定没有JavaScript接口来控制音频。或者这可能取决于播放音频的插件。如果你想真正控制音频,可以尝试使用HTML 5音频标签。但它在IE中不起作用。 - kayahr
function StopBackgroundMusic() { var MusicObj = document.getElementById("BackgroundMusic"); MusicObj.parentNode.removeChild(MusicObj); } 它有效。谢谢。 - joni

0

元素"BackgroundMusic"是否封装在表单元素中?如果是,请尝试类似的操作,如下所示:

document.getElementById("[formID].BackgroundMusic");

如果您使用表单标签,请给它一个ID。
<form id="music">

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接