html元素的内容被解释为字符串,而不是整数
jQuery: Content of html element is interpreted as a string, not an integer
当有人喜欢我网站上的评论时,在数字右侧添加一个"1",显示喜欢的数量,但当他们点击不喜欢时,它会正确计算。
例如:14 + 1 = 141
14 - 1 = 13
jQuery var elem = $('.like_button'), //Like button
num = $('.num_likes'), //Get the element: number of likes
oldnum = num.html(); //Number of likes
if(elem.html() == "Like") {
elem.html("Dislike");
num.html(oldnum+1); //Adds one like after liking it
} else {
elem.html("Like");
num.html(oldnum-1); //Deletes one like after disliking it
}
我真的很奇怪为什么不喜欢有用而喜欢不行。
为什么javascript解释num元素的值作为一个字符串,即使它是一个数字?有什么建议吗?
因为JavaScript将num.html()
解释为文本。+
符号的字符串在javascript中意味着连接,但-
并不意味着,所以在这种情况下,javascript意识到你想做数值计算。这就是为什么它适用于-
您应该使用parseInt()
将oldnum
转换为整数
您需要将oldnum
转换为一个数字:
if(elem.html() == "Like") {
elem.html("Dislike");
num.html(Number(oldnum)+1); //Adds one like after liking it
} else {
elem.html("Like");
num.html(Number(oldnum)-1); //Deletes one like after disliking it
}
或者,+oldnum
做与Number(oldnum)
相同的事情。
Javascript将页面上的文本解释为字符串。这是因为页面上的文本通常是这样的。例如:
<span id="berliner">I am a jelly donut.</span>
<script LANGUAGE="Javascript">
document.getElementById("berliner").innerHTML;
// it only makes sense that this be a string, right?
</script>
现在,在JS中,你使用+号做两件事:添加数字,或者把一个字符串放在另一个字符串后面。
var addingnumbers = 1+1;
// adding numbers, what you want
var a = "I am";
var b = " a jelly donut";
var addingstrings = a+b;
// adding strings, which you don't want.
因此,html被解释为一个字符串,就像它通常应该是,但在这种情况下不应该是。把字符串加到另一个字符串上只是把它附加到末尾,而不是做数学运算。有一个简单的解决方案:通过将innerHTML乘以1将其转换为数字。不能对字符串进行乘法运算,所以JS会将其更改为数字形式,准备将其添加到其他内容中。
var oldnum = num.html()*1; // done! The multiplying has changed it to a number.
如果你想把它变回字符串,你可以用toString()函数做相反的操作。
var aNumberToStartOutWith = 3;
var aStringToEndOffWith = aNumberToStartOutWith.toString();
相关文章:
- 如何在 Javascript 中将变量的值从字符串转换为整数
- 为什么我的javascript程序没有将其转换为整数而不是字符串
- Js char数组将字符串整数视为整数
- 将JavaScript字符串转换为整数
- 通过 ajax 将整数转换为字符串
- 为什么Javascript中的整数加空格加字符串会导致数字和字符串的总和?(2++'22'=24)
- JavaScript:计算字符串中特定整数的实例
- 从数字字符串中获取整数
- 解析 Positive 和 Negative 整数的字符串,Javascript
- 如何将字符串解析为整数并保留小数位(如果它们是零)
- 找到字符串值,但需要一个整数
- 字符串到整数的转换-在PHP和Javascript中是相同的
- 在Javascript中作为字符串添加的整数
- Javascript整数到字符串的强制转换不起作用
- 在Javascript中将字符串转换为整数
- 字符串到整数函数不'不起作用
- 将64位整数转换为json编码对象中的字符串的最佳实践
- JAVASCRIPT:将文本转换为字符串/整数
- Lodash:递增的字符串整数
- Javascript字符串/整数比较