0

请看下面的代码。我无法让我的价值观相加。数字只是将自身添加到字符串的后面。想知道有什么办法。

$("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,...等之类的值。

任何帮助在这里表示赞赏。

4

4 回答 4

6

将加法括在括号中:

 ... + (last_td_id + 7) + ...
于 2013-01-17T07:37:07.117 回答
2

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

改变

+last_td_id+1+

+(last_td_id+1)+

关联+从左到右的,并且在语句中'....class="load_ads" id="'+last_td_id首先将左侧字符串与数字 ( last_td_id) 连接,并给出一个字符串,该字符串再次将增量数字(如(2 或 3 ..))连接到前一个字符串。将括号放在数字周围使其precedence变高,首先执行计算并将结果连接到字符串中。

于 2013-01-17T07:36:32.423 回答
1

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

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

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

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

'<…' + (id + 1) + '"…' + (id + 2) + …
// evaluated as
(((…('<…' + (id + 1)) + '"…') + (id + 2)) + …
于 2013-01-17T08:00:09.640 回答
-1

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

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

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

在你的情况下,它可能是

(last_td_id+4).toString();  and so on
于 2013-01-17T07:40:30.510 回答