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、追加するそれぞれのものです。取得しようとしていますが、 etc など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つが文字列である場合、文字列の連結を実行します(そしてtoをキャスト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();

そうして初めて、変数「d」が数学的な出力を提供します

あなたの場合、それは可能性があります

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