在追加时添加整数

时间:2013-01-17 07:34:47

标签: javascript jquery append parseint

请查看以下代码。我无法将我的价值观加起来。数字只是将其自身添加到字符串的后面。不知道怎么回事。

$("a[name='older_post']").click(function(){
    $("div.main_ads_div a[name='older_post']").remove().fadeOut();
    var last_td_id=parseInt($("table.main_ads_table:last").find("td.load_ads:last").attr("id"),10);
    alert(last_td_id);   //OUTPUTS 38
    $("div.main_ads_div").append('<table class="main_ads_table" col="7" row="7"><tr><td class="load_ads" id="'+last_td_id+1+'"></td><td class="load_ads" id="'+last_td_id+2+'"></td><td class="load_ads" id="'+last_td_id+3+'"></td><td class="load_ads priority" id="'+last_td_id+4+'"></td><td class="load_ads priority" id="'+last_td_id+5+'"></td><td class="load_ads" id="'+last_td_id+6+'"></td><td class="load_ads" id="'+last_td_id+7+'"></td><td class="load_ads" id="'+last_td_id+8+'"></td></tr></table>');
});

所以我想要到达的是td追加的每个39, 40, 41, 42...,我正试图获得381, 382, 383,...但是我得到了诸如{{1}}等等的值

此处有任何帮助表示赞赏。

4 个答案:

答案 0 :(得分:6)

将加法包装在括号中:

 ... + (last_td_id + 7) + ...

答案 1 :(得分:2)

您正在将字符串与数字连接,将括号括在括号中以对其执行算术运算。

更改

+last_td_id+1+

+(last_td_id+1)+

+的{​​{3}}从左到右,在语句'....class="load_ads" id="'+last_td_id中首先将左手串与数字(last_td_id连接起来)并给出一个再次连接的字符串增量数字,如(2或3 ..)到前一个字符串。将括号括在数字周围使其precedence为高,并且首先执行calucation,并在字符串中连接结果。

答案 2 :(得分:1)

plus运算符仅在两个操作数均为数字时才执行数学加法。如果其中一个是字符串,它将执行字符串连接(并将1强制转换为"1")。

然而它是left associative,你没有使用括号。所以你的表达式被评估为

(((…('<…' + id) + 1) + '"…') + id) + 2) + …

并且每一步产生一个字符串。正如其他人已经提到的那样,您需要首先将其包装在括号中来强制执行添加:

'<…' + (id + 1) + '"…' + (id + 2) + …
// evaluated as
(((…('<…' + (id + 1)) + '"…') + (id + 2)) + …

答案 3 :(得分:-1)

在javascript中使用'+'总是附加变量/字符串。尝试这样的事情:

var c = (16 * 24) + 12;
d = c.toString();

只有这样var'd才能给你数学输出

在你的情况下,它可能是

(last_td_id+4).toString();  and so on