簡體   English   中英

如何使用+ =運算符

[英]How to use += operator

自從我開始使用JQuery以來,我總是想知道這個運算符在JQuery示例中如何工作:

for(var i = 0;i<=4;i++)
{
document.getElementById("mydiv").innerText += i;//<- works as expected
}

//results will be 0,1,2,3,4

但如果我使用JQuery而不知道該怎么做

for(var i = 0;i<=4;i++)
{
$("mydiv").text(+i)//<- NO!
$("mydiv").text+(i)//<- NO!
$("mydiv").+text(i)//<- JAJA COME ON!
$("mydiv").text(i)+//<- I guess that was stupid


}

這是不可能的。 innerText不同, text()是一個方法,而不是一個屬性。

嘗試:

$("mydiv").text($("mydiv").text() + i);

或者,如果您不想對$("mydiv")進行2次引用,則可以執行以下操作:

$("mydiv").text(function(i,v){
   return v + i; 
});

你只需要在這里使用jQuery。 使用text方法提取值,然后再次調用它以設置新值:

for(var i = 0;i<=4;i++)
{
    var mydiv = $("mydiv"),
        t = mydiv.text();
    mydiv.text(t + i);
}

您不能將此類shorcuts用於jQuery方法,它僅適用於本機賦值運算符 對於jQuery .text() ,使用回調:

$("#mydiv").text(function(index, oldtext) {
    return oldtext + i;
});

這個回調的東西適用於所有jQuery屬性“賦值”,無論是.html.val.prop.attr.css還是.text

jQuery不是一種編程語言,而是一個基於javascript的庫,因此,規則與你必須使用javascript遵循的規則完全相同,而javascript並不是為了理解這些結構而設計的。


編輯

當然我的意思是om(+1)不會增加opo.p++o.p+=1會:

var o = {};
o.p = 1;
o.m = function () { return this.p; };
o.m(+1); // o.p equals 1
o.p++;   // o.p equals 2
o.p+=1;  // o.p equals 3

與其他答案一樣,jQuery只是一個框架,並且遵循與任何JavaScript代碼相同的語法規則。

雖然我看到將function傳遞給.text()的優點,但我認為這不是解決實際問題的通用方法:如何在使用函數而不是變量時連接文本。

我贊成使用Array.join()進行有效的連接:

var textParts = [ $("mydiv").text() ];
for(var i = 0;i<=4;i++)
{
    textParts[textParts.length] = i;
}
$("mydiv").text(textParts.join(',')) // result: '...,1,2,3,4'

如果您更喜歡循環的函數方法,也可以使用Array.map()

AFAIK DOM功能相當慢,因此首先進行串聯然后設置div節點值更有效。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM