如果在上下文之外使用,变量如何包含数组内容

时间:2012-12-21 20:14:47

标签: javascript jquery

var name = new Array('freddy', 'mac', 'fanny', 'may');
var content = 'hi '.+name[i]+.'!';

$('div.class').each(function (i) {
this.html(content);
});

这个javascript应该输出 嗨freddy! 嗨,你好! 嗨,范妮! 嗨可能!

但是var有一个错误,因为它引用了尚未设置的数组。

2 个答案:

答案 0 :(得分:3)

您正在为content变量赋值,并在分配值时评估值,而不是在使用变量时。即普通值不能包含对另一个值的引用。

你可以使它成为一个在调用时评估值的函数:

var name = new Array('freddy', 'mac', 'fanny', 'may');
var content = function(i) { return 'hi ' + name[i] + '!'};

$('div.class').each(function (i) {
  $(this).html(content(i));
});

答案 1 :(得分:2)

您没有正确对报价进行排序,并且由于在分配内容时i不存在,因此无论如何都无法正常工作。你应该试试这个:

var content = 'hi, {0}!';

$('div.class').each(function(i) {
    this.html(content.replace("{0}", name[i]));
});