Простой 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>

4 ответа

Решение

Научитесь использовать Firebug. Это очень поможет вам в будущем.

budilnik=1;

Это может показаться сумасшедшим, но это переопределяет функцию budilnik на целое число, которое нарушает работу вашей формы. Если вы предваряете это утверждение ключевым словом var, вы будете затенять функцию, но не перезаписывать ее. Когда вы не указываете var ключевое слово, переменные, как предполагается, являются глобальной областью действия, которая может вызвать проблемы (как это).

Я использовал firebug, чтобы увидеть, что при втором щелчке "будильник не определен". Если бы вы использовали этот инструмент, вы могли бы, вероятно, решить эту проблему самостоятельно.

Переменная budilnik отслеживает функцию budilnik, Измените имя переменной, и ваша функция должна работать правильно каждый раз.

Более подробно:

Во-первых, JavaScript видит budilink определяется как функция. когда budilnik выполняется, значение budilnik перезаписывается целым числом 1. Так что в следующий раз JavaScript будет исполняться budilink, он пытается выполнить 1 вместо функции, которая была там раньше.

Положить 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>

Смена будильника =1; для i_budilnik=1 или другого имени переменной.. указав budilnik=1; вы меняете определение с функции на int.

В качестве альтернативы вы можете попробовать var budilnik=1; но не уверен, что это решит.

Другие вопросы по тегам