2015-12-07 2 views
1

Если я непосредственно вставить метод document.getElementById в методе setTimeout он работает отличноjavascript document. getElementById (''). значение возвращает нулевое значение

1.

<!DOCTYPE html> 
<html> 
<body> 

<p>Click the button to wait 3 seconds, then alert "Hello".</p> 

<button onclick="myFunction()">Try it</button> 

<script> 


function myFunction() { 
    setTimeout(function(){ alert("Hello"); }, document.getElementById("numbers").value); 
} 
</script> 
<input id="numbers" type="textbox" /> 
</body> 
</html> 

2.

<!DOCTYPE html> 
<html> 
<body> 

<p>Click the button to wait 3 seconds, then alert "Hello".</p> 

<button onclick="myFunction()">Try it</button> 

<script> 

var numbers = document.getElementById("numbers").value 
function myFunction() { 
    setTimeout(function(){ alert("Hello"); }, numbers); 
} 
</script> 
<input id="numbers" type="textbox" /> 
</body> 
</html> 

Почему второй один не работает? Я думаю, что var numbers возвращает null, но я не знаю почему.

+1

Поскольку код JavaScript работает до того, как '' является частью DOM. – Pointy

ответ

0

В первой версии вы извлекаете элемент и его значение, когда происходит событие click и вызывает связанный обработчик. В этот момент поле ввода имеет значение, которое возвращается.

Во второй версии вы извлекаете элемент ввода и его значение, когда поле ввода не существует в DOM, поэтому null используется при вызове обработчика. Очевидно, вы должны пойти на первое.

+0

Теги скрипта не проверяются вне тегов '' или ''. Лучшее место для размещения этого скрипта, вероятно, будет прямо перед закрывающим тегом ''. –

0

Строка var numbers = document.getElementById("numbers").value выполняется при загрузке вашей страницы, numbers еще не существует.

0

Как @gmiley сказал, цифр еще не существует. Вы должны включить:

var numbers = document.getElementById("numbers").value 

внутри вашей функции.

Кроме того, на боковой ноте ... Вероятно, не лучше разместить ваш javascript в середине файла. Я почти не видел «ввод» после тегов «script».

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