2013-12-19 4 views
7

Я продолжаю получать ошибку «Uncaught TypeError: Не могу установить свойство« innerHTML »из null», когда я пытаюсь запустить эту программу в chrome. Я не делаю то, что я делаю неправильно, и любая помощь будет оценена по достоинству.error: Uncaught TypeError: Невозможно установить свойство 'innerHTML' из null

<!DOCTYPE html> 
<html> 
<head> 
</head> 
<script> 
    var x = "hey"; 
    var counter = 1; 
    var button = document.getElementById("button"); 
    var div = document.getElementById("box"); 
    var text = document.getElementById("text"); 
    var sound = document.getElementById("sound"); 
    var array=[ "thanks for clicking", "keep on clicking", "click one more time", "why do you keep on clicking me?", "stop clicking me!"]; 
function thing(file){ 
    var y = array[Math.floor(Math.random() * array.length)]; 
     if (x == y){ 
      while (y == x){ 
       var y = array[Math.floor(Math.random() * array.length)]; 
     } 
     } 
    form1.text.value=y; 

    x = y; 
sound.innerHTML = "<embed src=\""+file+"\"hidden=\"true\"autostart=\"true\" loop=\"false\"/>"; 

} 
</script> 
</head> 
<body> 
<form name="form1"> 
<input type="button" id="button" value="click" onClick="thing('sound.mp3')" /> 
    <input type="text" id="text" value="hey" /> 
</form> 
<div id="sound"> 
<p> 
</p> 
</div> 
</body> 
</html> 
+4

Ваш скрипт выполняется до загрузки ''. Поэтому ни один из элементов, которые вы пытаетесь получить, существует, и 'getElementById' возвращает' null'. – 0x499602D2

ответ

38

Дождитесь окна для загрузки:

window.onload = function() 
{ 
    //yourJSCodeHERE 
} 

или переместить JS после </body> тега.

+0

Спасибо большое! Я переехал JS, чтобы пойти после моего div, и это сработало! –

+1

Если ваш фрагмент кода работает специально после загрузки html, вы можете легко поместить код js прямо до конца тега ... аналогично тому, как Google Analytics попросит вас сделать то же самое. –

Смежные вопросы