我不明白为什么在这个例子中添加不起作用:
<button id="button">Click</button>
<p id="counter"></p>
function handler(){
var button = document.getElementById('button'),
count = document.getElementById('counter'); //
count.textContent = 0;
button.onclick = function(){
count.textContent++; //Why this works
//but this does not
//count.textContent + 1;
console.log(typeof count.textContent); // Why is a string?
}
}
window.onload = handler;
为什么(typeof count.textContent)
是string
?
答案 0 :(得分:2)
count.textContent++; //Why this works
上述行相当于count.textContent = count.textContent +1;
它还将变量解析为数字变量。
而下面的只是一个关于字符串的声明:
//count.textContent + 1;
所以你需要使用以下内容:
count.textContent = parseInt(count.textContent) + 1
答案 1 :(得分:1)
只有这样写:
count.textContent = parseInt(count.textContent) + 1;
count.textContent ++在递增后将值存储在count.textContent中。
但是在count.textContent + 1的情况下,需要将递增的值存储在某个变量中;
答案 2 :(得分:1)
textContent
顾名思义就是一个字符串。当你这样做(并实际赋值给某事物):
count.textContent = count.textContent + 1;
Javascript会将此解释为string
+ a number
,并且由于+
是字符串的连接运算符,因此它会将数字转换为字符串,然后将它们粘在一起。所以你得到:
"0" + "1" = "01"
执行此操作时:
count.textContent++;
++
运算符不是为字符串定义的,而是用于数字。因此,javascript将(尝试)将您的字符串转换为数字,增加它,然后将其转换回字符串并将其存储回count.textContent
等效陈述类似于:
count.textContent = parseInt(count.textContent,10) + 1;
答案 3 :(得分:0)
对于问题的第一部分,count.textContent + 1
是一个返回1加上当前值的语句。它不会修改内容。
count.textContent++
修改内容并返回未修改的数字。
count.textContent = count.textContent + 1
会修改内容并返回修改后的数字,该数字相当于++count.textContent
。
对于问题的第二部分,元素textContent
始终是一个字符串。通过使用加法(+
)运算符,您将字符串"0"
转换为数字0
,然后修改结果数字。
答案 4 :(得分:0)
他们是不同的运营商。
++X
是增量运算符。它的作用是向X
添加一个,然后返回当前值X
。您可以将其读作&#39;添加一个X
,然后返回X
。
增量运算符也可以追随某些东西。 X++
将返回X
的当前值,然后递增它。
+
是加法运算符。它不会修改它所使用的东西的值。 X + Y
可以被理解为&#39;返回X
+ Y
的值。它不会修改任何一个参数。它也是可交换的,因此X+Y === Y+X' when
X and
Y`都是数字。
在字符串上使用时,它们也有不同的行为。 +
将连接字符串,因此'foo' + 'bar' === 'foobar'
。 ++
没有为字符串定义,因此它会抛出一个错误,或者它会强制将它赋予一个数字的值。
element.textContent
是一个以字符串形式返回的属性。如果您使用此:
element.textContent++;
该值将被强制转换为一个数字,增加一个,之后的值将被返回。 (现在,你没有用返回值做任何事情)
如果您使用此:
element.textContent + 1;
该语句将返回一个字符串:'01'
。
同样,你没有为此设置任何内容,+
不会更改参数。默认情况下,Javascript会尝试强制左侧参数(X
中的X + Y
),因此1 + '0' === 1
和'1' + 0 === '10'
。