JavaScript; Как мне объявить глобальную переменную? - PullRequest
2 голосов
/ 09 февраля 2011

http://jsfiddle.net/borayeris/6kvyb/

<ul>
  <li>foo</li>
  <li>bar</li>
</ul>

<script>
$('li').each(function(index) {
    var qq=$(this).text();
    alert(index + ': ' + qq);
  });


alert(qq);// Asking this one.
</script>

Ответы [ 3 ]

15 голосов
/ 09 февраля 2011

Вы объявили qq внутри области действия функции. Как только эта функция завершается, qq больше не существует.

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

var qq;

$('li').each(function(index) {
    qq=$(this).text();
    alert(index + ': ' + qq);
  });

alert(qq); // Will alert 'bar'
3 голосов
/ 09 февраля 2011

Ответ Брэндона правильный, объясняя почему. Если вместо этого вы хотите знать, как сделать его доступным после вызова каждой из (), вы, вероятно, хотите что-то вроде этого:

var qq;

$('li').each(function(index) {
    qq = $(this).text();

    alert(index + ': ' + qq);
  });


alert(qq);

Это делает qq глобальной переменной области видимости, для которой вы переназначаете значение для каждого прохода в цикле. В конце цикла переменная сохранит последнее присвоенное ей значение (бар в вашем примере).

0 голосов
/ 09 февраля 2011

Это должно быть переписано так:

<script>
var qq;
$('li').each(function(index) {
qq=$(this).text();
alert(index + ': ' + qq);
});
alert(qq);

;

Обратите внимание, что qq будет содержать только последнее значение, так как вы переназначаете его каждый раз, когда просматриваете li.

Это не сработало, потому что вы объявили переменную qq внутри анонимной функции, поэтому она не существовала вне ее.

...