jQuery:为什么这个小功能不起作用?

时间:2011-01-29 18:34:29

标签: javascript jquery

它应该在LI的右边添加一个数字,所以第一个LI将在数字1前面,第二个LI在前面加上2,等等。

同样,i = i+1;i++;是一样的吗?如果没有,有什么区别?

http://jsfiddle.net/nicktheandroid/U8byW/9/

3 个答案:

答案 0 :(得分:3)

这一行是问题所在:

$(this).append("<span class="commentnumber"> #' i '</span>");

请改用:

$(this).append("<span class='commentnumber'> #" + i + "</span>");

请注意,字符串分隔符现在匹配,并使用+来连接字符串。

更新代码时,它可以正常运行 - http://jsfiddle.net/U8byW/14/


是的,i = i + 1;与单行声明的i++相同。

答案 1 :(得分:2)

你的代码中有一些非常破碎和混乱的简单和双引号,更不用说你正在尝试修改循环的i变量,这不是一件好事。试试这样:

$('li').each(function (index) {
    $(this).append(
        $('<span/>').addClass('commentnumber').text('#' + (index + 1))
    );
});

或者如果您愿意(但要注意简单和双引号):

$('li').each(function (index) {
    $(this).append('<span class="commentnumber">#' + (index + 1) + '</span>');
});

demo here

答案 2 :(得分:1)

尝试此解决方案:http://jsfiddle.net/U8byW/10/

你遇到的问题是:

  • 当你说class="commentnumber"时,你破坏了JS字符串,导致错误(Uncaught SyntaxError: Unexpected identifier
  • 您根本不需要增加i:jQuery会为您处理。但是要回答你的问题,i = i + 1i++大致相同,是的。区别在于i = i + 1返回新值(添加1),而i++返回旧值,然后将其递增1。您还可以使用i += 1++i。所有这些都是粗略的等价物。
  • JavaScript不会像PHP或其他语言那样自动格式化字符串或在字符串中插入变量。您必须连接字符串以插入变量。我已经在上面的更新链接中为您完成了这项工作。请注意,字符串连接运算符(+)与加法运算符(+)相同,与某些语言不同(例如,PHP,其中串联为.)。

希望这有帮助。

编辑:我意识到你为什么要递增i:让行从1开始而不是0.忽略我说你不需要递增它。我没有直接思考。