我理解这个问题已被多次询问,所以在考虑发布之前尝试了一些事情,但无论如何仍然在这里结束。 我现在明白document.Write()会覆盖页面内容而不会指向任何东西,所以我给了它一个div来玩。
我有一个看起来像这样的空div:
<div id="audio"></div>
我的JS现在看起来像这样:
document.onkeydown = function() {
var numberOfSongs = 3
var sound = new Array(numberOfSongs+1)
sound[0]= "key1.mp3"
sound[1]= "key2.mp3"
sound[2]= "key3.mp3"
function randomNumber(){
var randomLooper = -1
while (randomLooper < 0 || randomLooper > numberOfSongs || isNaN(randomLooper)){ randomLooper = parseInt(Math.random()*(numberOfSongs+1))
}
return randomLooper
}
var randomsub = randomNumber()
var soundFile = sound[randomsub]
document.getElementById("audio").innerHTML ('<EMBED src= "' + soundFile + '" hidden=true autostart=true loop=true>')
}
如果它看起来有点乱,那可能是因为我刚刚开始学习JS,从C#桥接,所以可能只是我的语法不合适。
就像以前一样:
document.Write ('<EMBED src= "' + soundFile + '" hidden=true autostart=true loop=true>')
在擦拭页面之前确实发出了声音,现在我什么都没有,没有声音,HTML中没有任何内容显示出来,所以我完全不知道我做错了什么。
答案 0 :(得分:2)
基本上,innerHTML
属性不是函数,
document.getElementById("audio").innerHTML =
'<EMBED src= "' + soundFile + '" hidden=true autostart=true loop=true>';
在你的控制台中,你应该看到像 innerHTML不是函数这样的错误。