обновление значения переменной javascript - PullRequest
0 голосов
/ 25 марта 2012

Я делаю календарь, где пользователь может щелкнуть изображение, чтобы перейти к предыдущему году.У меня есть глобальная переменная с именем currentYear, она используется во всей программе.

Мой вопрос: как я могу изменить (обновить) ее значение, когда пользователь щелкнет по этому изображению?С моим кодом он меняется, но не обновляется в других отчетах.

    <button onClick="dec()">test</button>
    <script> 
    var currentDate = new Date();
    var currentYear = currentDate.getFullYear();
    function dec() { 
    currentYear--; 
    }​
    document.write(currentYear); // outside the function 
    </script>

Ответы [ 3 ]

0 голосов
/ 25 марта 2012

При определении и использовании глобальных переменных необходимо учитывать несколько моментов:

  1. Переменная должна быть объявлена ​​в глобальной области видимости.Это означает, что объявление var currentDate; не должно быть в какой-либо функции.Если он объявлен в глобальной области видимости, его значение будет действовать в течение всего срока действия веб-страницы, поэтому вы можете получить к нему доступ из любого места в любое время в течение срока службы этого веб-страницы.Есть несколько других способов объявить это, которые заставляют его входить в глобальную область, но это самый простой способ.
  2. Не должно быть никаких других переменных с тем же именем, которые были объявлены в области, в которойВы хотите использовать глобальную переменную.Это означает, что никакие локальные переменные с таким именем и никакие аргументы функций с таким именем, как конфликтующая переменная с тем же именем, не будут иметь приоритета и переопределят доступ к этому имени.глобальный охват, получая к нему доступ с помощью префикса window., например window.currentYear = 2011;, но вам не нужно делать это таким образом.

Если ни один из них не подходит для вашей конкретной ситуации,тогда вы не покажете нам достаточно своего кода, чтобы мы могли увидеть, что на самом деле происходит, потому что ваш общий код должен работать, если он находится в глобальной области видимости.

0 голосов
/ 26 марта 2012

Я нашел способ, если вам интересно, вот как я это сделал:

    <html>
    <body>
    <div id="llo"></div>
    </body>
    <script>
    var val = 2012;
    var id;
    var counter = 0 ;
    function decrementYear(){
    id="laila"+counter;
    counter=counter+1;
    val=val+1;
    document.getElementById(id).style.visibility='hidden';
    str="<table id='laila"+(counter)+"' border='1'><tr><td>"+(val)+"</td><td onclick='decrementYear()'>clickHere</td></tr></table>";
    document.getElementById("llo").innerHTML = str;
    }
    str="<table id='laila"+(counter)+"' border='1'><tr><td>"+(val)+"</td><td   onclick='decrementYear()'>clickHere</td></tr></table>";
    document.getElementById("llo").innerHTML = str;
    </script>
    </html>
0 голосов
/ 25 марта 2012

, кажется, работает :

<button onClick="dec()">test</button>
<script>

    var currentDate = new Date();
    var currentYear = currentDate.getFullYear();

    function dec() {
        currentYear--;
        alert(currentYear);
    }​

</script>
...