2013-02-19 4 views
0
<!DOCTYPE HTML> 
<html> 
<head> 
<script> 
document.write("TEST1") 
document.getElementById("demo").innerHTML="TEST2" 
document.write("TEST3") 
</script> 
</head> 

<body> 
<p id="demo">TO_BE_REPLACED</p> 
</body> 
</html> 

Вот результат: TEST1javascript - Почему внутренний HTML не заменяет запуск?

TO_BE_REPLACED 

Кажется Javascript, исполняющих остановился на document.getElementById("demo").innerHTML="TEST2". Почему это не выполняется?

+3

Смотрите это: http://stackoverflow.com/questions/5704924/executing-javascript-in-the-head-getelementbyid-returns-null, http://stackoverflow.com/questions/8864776/getelementbyid -and-null-why, http://stackoverflow.com/questions/5371047/getelementbyid-returns-null-even-though-the-element-exists или http://stackoverflow.com/questions/10839271/null-return -by-getelementbyid-method-in-javascript – HoLyVieR

ответ

3

Когда сценарий запускается, <p id="demo">еще не существует. Поэтому document.getElementById('demo') возвращается null, который затем вызывает ошибку при попытке присвоить null.innerHTML = "TEST2"

Эта ошибка останавливает выполнение всех, так что вы никогда не получите, чтобы увидеть окончательный TEST3.

+0

Спасибо за помощь! – CDT

1

Вы должны приложить свой скрипт к функции, которая будет вызываться, когда окно загружается (используя событие window.onload).

<!DOCTYPE HTML> 
<html> 
<head> 
<script> 
    function replaceDemoText() 
    { 
     document.getElementById("demo").innerHTML="TEST2"; 
    } 
    window.onload = replaceDemoText; 
</script> 
</head> 

<body> 
<p id="demo">TO_BE_REPLACED</p> 
</body> 
</html> 
+0

Спасибо, это работает ~! – CDT

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