Переменная Javascript, похоже, не входит в DOM - PullRequest
0 голосов
/ 06 сентября 2011
<head>
<script>
function setParams() {
    var year = "2011";
}

function showYear() {
    alert("The year is " + year);
}
</script>
</head>
<body>
<input type="submit" onclick="setParams();" value="Set" />
<input type="submit" onclick="showYear();" value="Year" />
</body>

Так почему же год не входит в дом для предупреждения, чтобы прочитать?

Ответы [ 4 ]

3 голосов
/ 06 сентября 2011

Объявление вашей переменной:

var year = "2011";

- это локальная переменная, которая видна только внутри функции, в которой вы ее объявили.

Если вы хотите, чтобы она отображалась глобально, чтобы другие функции моглидоступ к нему, затем вы должны объявить его как глобальную переменную, где вы объявляете его на верхнем уровне области видимости вне каких-либо функций:

var year;

function setParams() {
    year = "2011";
}

function showYear() {
    alert("The year is " + year);
}

Переменная, объявленная внутри функции, по определению, является локальной переменнойи доступен только внутри этой функции.

Тогда, наконец, вы можете не совсем понять, что такое DOM.Стандарты DOM для «объектной модели документа» и термин, используемый для представления объектов на веб-странице.Здесь вы спрашиваете синтаксис глобальной переменной javascript, который отделен от DOM.

Надеюсь, это не смущает вас, но ради полноты ответа единственное место, где глобальные переменные Javascript и DOM могут показаться связанными, это то, что в веб-браузере также доступны глобальные переменныена «оконном» объекте.Итак, в приведенном выше примере кода вы используете год как:

function showYear() {
    alert("The year is " + year);
}

или как:

function showYear() {
    alert("The year is " + window.year);
}

Оба дают одинаковый результат в веб-браузере, если year является глобальнымпеременная.

2 голосов
/ 06 сентября 2011

Вашему year-var потребуется глобальная область видимости, чтобы вы могли получить к ней доступ в других функциях, т.е. вы определяете ее вне функций. Sth, как:

var year;

function setParams() {
    year = "2011";
}

function showYear() {
    alert("The year is " + year);
}
2 голосов
/ 06 сентября 2011
var year = "2011";

означает, что область года является локальной для функции, объявленной в

, объявляет ее вне функций.Или удалите ключевое слово var, что также делает его глобальным.

1 голос
/ 06 сентября 2011

Год ограничен функцией setParams и не будет доступен вне этой функции.

Вы можете изменить функцию на

function setParams() {
 year = "2011";
}

, что даст глобальный доступ к годупеременная

Не обязательно наилучшая практика, хотя

Взгляните на шаблон модуля Дугласа Крокфорда для полезного способа управления глобальными переменными и функциями:

http://yuiblog.com/blog/2007/06/12/module-pattern

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