Простой вопрос Javascript - PullRequest
       7

Простой вопрос Javascript

1 голос
/ 21 марта 2010

Когда я нажимаю на кнопку, в первый раз все работает нормально, а во второй раз ничего не происходит. Почему это так?

<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 ]

6 голосов
/ 21 марта 2010

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

budilnik=1;

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

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

3 голосов
/ 21 марта 2010

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

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

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

1 голос
/ 21 марта 2010

Поставьте ключевое слово 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>
0 голосов
/ 21 марта 2010

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

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...