document.Write()覆盖所有页面内容

时间:2016-03-30 17:46:43

标签: javascript html

我理解这个问题已被多次询问,所以在考虑发布之前尝试了一些事情,但无论如何仍然在这里结束。 我现在明白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中没有任何内容显示出来,所以我完全不知道我做错了什么。

1 个答案:

答案 0 :(得分:2)

基本上,innerHTML属性不是函数,

document.getElementById("audio").innerHTML = 
   '<EMBED src= "' + soundFile + '" hidden=true autostart=true loop=true>';

在你的控制台中,你应该看到像 innerHTML不是函数这样的错误。