繁体   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