Переменные, ведущие себя плохо - в JavaScript - в функциях - PullRequest
1 голос
/ 26 декабря 2009

Во-первых, вот мой код:

var variable1 = 10;
  function f1 (){
  alert(variable1);
  }
//When button is pressed, call function
$("#button").click(f1);

Почему я не могу получить доступ к variable1 внутри функции? Большое спасибо и счастливого Рождества.

Измененный вопрос

$(document).ready(function() {

var how_many_words = 3;
alert(how_many_words);  //This happens

$("input").keypress(check_word);

function check_word(){
alert('hello');         //This happens
alert(how_many_words);  //This doesn't
    }

    });

Ответы [ 4 ]

1 голос
/ 27 декабря 2009

Вот окончательный ответ на вопрос, в чем заключалась моя проблема, благодаря этому сайту . Я по глупости назвал одну из моих переменных так же, как id и функцию. Безумие! Я прошу прощения за тратить дни бокса людей. Спасибо за вашу помощь.

1 голос
/ 26 декабря 2009

Ваша проблема на самом деле не в том, что вы не можете получить доступ к переменной, а в том, что элемент #button еще не находится в DOM, когда вызывается код привязки. Оберните ваш код инициализации в готовую формулировку jQuery DOM:

$(document).ready(function() {
    $("#button").click(f1);
});
0 голосов
/ 26 декабря 2009

Я совершенно уверен, что вы можете получить доступ к variable1 изнутри f1. Что происходит, когда вы пытаетесь?

Одна вещь, которую я заметил, это то, что вы вызываете alert с аргументом int. Я не уверен, что это работает. Попробуйте

предупреждение (variable1.toString ());

вместо.

РЕДАКТИРОВАТЬ : ОК, не берите в голову этот бит; alert (int) определенно работает.

0 голосов
/ 26 декабря 2009

Попробуйте:

 var variable1 = 10;
 var f1 = function(){
     alert(variable1);
 }
 //When button is pressed, call function
 $("#button").click(f1);

Просто издевались над твоей проблемой. Ваш код отлично работает для меня:

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
    <head>
        <title>
            test
        </title>

        <script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.3.2/jquery.min.js"></script>
    </head>
    <body>
        <div id="button">hello</div>
        <script type="text/javascript">
            //<![CDATA[
                var variable1 = 10;
                function f1 (){
                    alert(variable1);
                }
                //When button is pressed, call function
                $("#button").click(f1);

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