Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/71.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每个循环都没有正确地添加值?_Javascript_Jquery_Each - Fatal编程技术网

Javascript 为什么我的jQuery每个循环都没有正确地添加值?

Javascript 为什么我的jQuery每个循环都没有正确地添加值?,javascript,jquery,each,Javascript,Jquery,Each,我试图获取几个字段的值并将它们相加&在我的测试中,我遇到了问题。我有以下代码: var count; function calculate() { // Fix jQuery conflicts jQuery.noConflict(); count = 0; jQuery('.calculate').each(function() { var currentElement = jQuery(this); var valu

我试图获取几个字段的值并将它们相加&在我的测试中,我遇到了问题。我有以下代码:

var count;

function calculate() {

    // Fix jQuery conflicts
    jQuery.noConflict();

    count = 0;

    jQuery('.calculate').each(function() {

        var currentElement = jQuery(this);

        var value = currentElement.val();

        var count = count + value;

        alert(count);

    });

}
我在第一个字段中输入值“9”&当第一个警报触发时,我得到“undefined9”;所有其他值当前都设置为“0”;当它再次触发时,我总是得到“未定义”


为什么我得到了“未定义”位&为什么它只返回当前字段的值,而不将它们相加?

您在循环中对
计数
值进行尺寸标注,实际上是在每次迭代中首先将其设置为
未定义

您希望删除循环中的
var
。这样,它就没有匿名函数的作用域,JavaScript将查看父函数的声明

最好先对数字进行
parseInt(count,10)
分析,因为JavaScript重载了
+
操作符以表示算术加法和字符串串联,并且您不希望
count
成为
“0something”


最后,
count+=value
更容易理解:)

您在两个不同的范围内定义count,一个是计算函数,另一个是各自使用的函数。您可能希望将第二个计数命名为其他名称,或者至少不要重新声明它。

您无意中重新声明了
count

var count = count + value;
应该是:

count = count + value;
在最内部的作用域(即
calculate
)中声明的计数将隐藏另一个(这称为变量的“阴影”)

得到“undefined9”的原因是新声明的
count
变量的默认值是
undefined
;当您添加到它时,它会在左侧看到一个
未定义的
值,在右侧看到一个数字,并决定字符串串联是执行添加的最佳方式,从而导致字符串“未定义9”


它必须猜测您的预期含义,因为
+
重载意味着数字加法和字符串串联;在本例中,它的猜测是错误的。

您可能在
var count=count+value声明
计数
(因此它是
未定义的
),然后将其与
连接。是的,换个名字。非常感谢。我删除了它的重新声明&未定义的现在不见了,但是是的。。它以错误的方式将其连接为字符串&而不是int。不确定parseInt()位的位置。也谢谢你最后的提示。。我不知道如何用JS做到这一点haha@Brett:
val()
正在返回字符串值,而不是数字
parseInt()
获取字符串并将其解析为整数;您的行将更改为:
count+=parseInt(值,10)@alex:谢谢+因为
parseInt
,我完全没有意识到这里是必要的;-)