Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/74.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript jQuery:html元素的内容被解释为字符串,而不是整数_Javascript_Jquery - Fatal编程技术网

Javascript jQuery:html元素的内容被解释为字符串,而不是整数

Javascript jQuery:html元素的内容被解释为字符串,而不是整数,javascript,jquery,Javascript,Jquery,当有人喜欢我网站上的评论时,在显示喜欢的数量的数字右侧会添加一个“1”,但当他们单击“不喜欢”时,它会纠正数学错误 例如: 14 + 1 = 141 14 - 1 = 13 <span id="berliner">I am a jelly donut.</span> <script LANGUAGE="Javascript"> document.getElementById("berliner").innerHTML; // it only makes se

当有人喜欢我网站上的评论时,在显示喜欢的数量的数字右侧会添加一个“1”,但当他们单击“不喜欢”时,它会纠正数学错误

例如:

14 + 1 = 141
14 - 1 = 13
<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>
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元素的值解释为字符串,即使它是一个数字?有什么建议吗?

您需要将
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)
相同的操作,您需要将
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将
num.html()
解释为文本。javascript中字符串的
+
符号表示串联,但
-
并不表示串联,因此在这种情况下,javascript意识到您想要进行数值计算。这就是为什么它与
-


您应该使用
parseInt()

oldnum
转换为整数,因为JavaScript将
num.html()
解释为文本。javascript中字符串的
+
符号表示串联,但
-
并不表示串联,因此在这种情况下,javascript意识到您想要进行数值计算。这就是为什么它与
-


您应该使用
parseInt()
oldnum
转换为整数,Javascript将页面上的文本解释为字符串。这是因为页面上的文本通常是这样的。例如:

14 + 1 = 141
14 - 1 = 13
<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>
因此,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将页面上的文本解释为字符串。这是因为页面上的文本通常是这样的。例如:

14 + 1 = 141
14 - 1 = 13
<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>
因此,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();

您可以使用:
var oldnum=+$.trim(num.html())
-只是一个数字运算符(不能减去字符串),因此javascript强制oldnum为数字可以同时处理数字和字符串,因此javascript将第二个操作数(1)强制为字符串,因为该操作数与oldnum匹配。
var oldnum=num.html()//喜欢的数量是一个字符串,您必须将
oldnum
转换为整数
parseInt(oldnum,10)
应该完成您可以使用的技巧:
var oldnum=+$.trim(num.html())
-只是一个数字运算符(不能减去字符串),因此javascript强制oldnum为数字可以同时处理数字和字符串,因此javascript将第二个操作数(1)强制为字符串,因为该操作数与oldnum匹配。
var oldnum=num.html()//喜欢的数量是一个字符串,您必须将
oldnum
转换为整数
parseInt(oldnum,10)
应该做一个(悲伤的)事实,是的:在javascript中,字符串连接和加法运算符都用“+”表示。在许多其他语言中都不是这样,比如php、lua..,您可以将oldnum解析为如下数字:
oldnum=parseInt(num.html(),10)为什么在parseInt中使用“10”?它代表什么?那是基数。w3学派:如果省略了基数参数,JavaScript会假设如下:如果字符串以“0x”开头,则基数为16(十六进制);如果字符串以“0”开头,则基数为8(八进制)。此功能不推荐使用。如果字符串以任何其他值开头,则基数为10(十进制),具体取决于您需要什么。若您尝试使用Number('10px'),Number将显示NaN,但parseInt将返回10。我想说数字更严格……作为一个(可悲的)事实,是的:在javascript中,字符串连接和加法运算符都用“+”表示。在许多其他语言中都不是这样,比如php、lua..,您可以将oldnum解析为如下数字:
oldnum=parseInt(num.html(),10)为什么在parseInt中使用“10”?它代表什么?那是基数。w3学派:如果省略了基数参数,JavaScript会假设如下:如果字符串以“0x”开头,则基数为16(十六进制);如果字符串以“0”开头,则基数为8(八进制)。此功能不推荐使用。如果字符串以任何其他值开头,则基数为10(十进制),具体取决于您需要什么。若您尝试使用Number('10px'),Number将显示NaN,但parseInt将返回10。我想说数字更严格…你说+oldnum是什么意思?num.html(+oldnum)?您可以使用
num.html((+oldnum)+1)来代替
num.html(Number(oldnum)+1)
。使用+oldnum是什么意思?num.html(+oldnum)?您可以使用
num.html((+oldnum)+1)来代替
num.html(Number(oldnum)+1)