Простой вопрос Javascript
Когда я нажимаю на кнопку, в первый раз все работает нормально, но во второй раз ничего не происходит. Почему это?
<form name="alert"><input type="text" name="hour"><input type="text" name="min"><input type="button" value="ok" onclick="budilnik(this.form)">
<script type="text/javascript">
function budilnik(form)
{
budilnik=1;
min=form.min.value;
hour=form.hour.value;
alert (min+' '+hour+' '+budilnik);
}
</script>
Ответы
Ответ 1
Научитесь использовать Firebug. Это поможет вам в будущем.
budilnik=1;
Это может показаться сумасшедшим, но это переопределяет функцию budilnik в целое число, которое разбивает вашу форму onlick. Если вы предишете этот оператор с ключевым словом var
, вы затенете функцию, но не перезапишите ее. Если вы не укажете ключевое слово var
, переменные считаются глобальной областью, что может вызвать проблемы (например, это).
Я использовал firebug, чтобы увидеть, что во втором клике "budilnik не определен". Если вы использовали этот инструмент, вы могли бы, вероятно, самостоятельно отладить эту проблему.
Ответ 2
Переменная budilnik
затеняет функцию budilnik
. Измените имя переменной, и ваша функция должна работать правильно каждый раз.
Подробнее:
Во-первых, JavaScript видит budilink
как функцию. Когда budilnik
выполняется, значение budilnik
заменяется на целое число 1. Таким образом, в следующий раз, когда JavaScript будет исполнен budilink
, он пытается выполнить 1 вместо функции, которая была там раньше.
Ответ 3
Поместите ключевое слово var
перед вашим именем переменной.
Я тестировал следующий код, и он просто работает:
<form name="alert">
<input type="text" name="hour">
<input type="text" name="min">
<input type="button" value="ok" onclick="budilnik(this.form);">
<script type="text/javascript">
function budilnik(form)
{
var budilnik=1;
var min=form.min.value;
var hour=form.hour.value;
alert (min+' '+hour+' '+budilnik);
}
</script>
Ответ 4
Изменить budilnik = 1; to i_budilnik = 1 или какое-либо другое имя переменной.. путем указания budilnik = 1; вы меняете определение из функции в int val.
В качестве альтернативы вы можете попробовать var budilnik = 1; но не уверен, что это решает.