我知道这个问题已经被问了很多次了,所以在考虑发布之前尝试了一些事情,但最终还是出现在了这里。我现在理解了这份文件。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中也没有显示,所以我完全不知道我做错了什么。
基本上,innerHTML
是一个属性而不是函数,
document.getElementById("audio").innerHTML =
'<EMBED src= "' + soundFile + '" hidden=true autostart=true loop=true>';
在控制台中,您应该会看到一个错误,如innerHTML不是函数。