Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/image-processing/2.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数学给出不正确的结果,如何修复?_Javascript_Jquery_For Loop - Fatal编程技术网

Javascript数学给出不正确的结果,如何修复?

Javascript数学给出不正确的结果,如何修复?,javascript,jquery,for-loop,Javascript,Jquery,For Loop,所以我对Javascript有一个问题,当我执行一个函数时,它给了我错误的数字。基本上我已经设置好了,所以我的“总数”等于“总数”加上“persec”,persec是我希望每秒加到“总数”上的数字。所以,如果“persec”等于4,我希望它每秒钟加4到“Total” 我有一个for循环,它充当我的计时器,点击一个隐藏的按钮,该按钮被设置为获取persec是什么,并将其添加到我的总数中。我的问题是,在persec传递值1之后,它开始错误地添加。例如,如果我将persec设置为2,我的总数将每秒增加

所以我对Javascript有一个问题,当我执行一个函数时,它给了我错误的数字。基本上我已经设置好了,所以我的“总数”等于“总数”加上“persec”,persec是我希望每秒加到“总数”上的数字。所以,如果“persec”等于4,我希望它每秒钟加4到“Total”

我有一个for循环,它充当我的计时器,点击一个隐藏的按钮,该按钮被设置为获取persec是什么,并将其添加到我的总数中。我的问题是,在persec传递值1之后,它开始错误地添加。例如,如果我将persec设置为2,我的总数将每秒增加4。它应该只增加2。例如,如果persec设置为3,它将每秒增加9。这似乎是把珀尔塞克的平方加到总数上,我不知道为什么

下面是使用Javascript编辑的按钮和文本:

<p>Per second: <span id="persec">0</span></p>
<p>Total: <span id="total">0</span></p>
<button id="totalholder" hidden="true"></button>

我只是不小心把它修好了

我所要做的就是将for循环更改为:

for (var i = 0; i < persec; i = i + persec)
for(变量i=0;i

我不知道为什么会这样做,我以前用过另一种方式

清除计时器功能中的循环:

totalCount = setInterval(function() {
    var persec = parseInt($("#persec").text(), 10);
    if (persec > 0) {
        $("#totalholder").click();
    }
}, 1000);

在原始代码中,单击处理程序将总数增加
persec
,而
for
循环正是这样做的
persec
次,这将使其平方。因为您不想重复多次,所以不需要循环

persec
totalHolder
函数中的局部变量。为什么您的interval函数要使用它?无法访问persec,因为它的作用域仅在
totalHolder
方法中。问题是您正在循环
persec
次,并且单击处理程序每次都将
persec
添加到总数中。这就是persec乘以persec,你的新循环只运行一次。为什么你需要一个循环?是的,我做循环的方式很混乱,因为我到处寻找,却找不到如何在单个函数中实现我想要的。我想到了让for循环单击一个隐藏的按钮,其中包含我的jquery数学。@Barmar它没有运行一次,在我上面的代码中它每秒钟运行一次。
for()
循环只迭代一次,因为您的新增量。看起来您在
var parsec=
行中缺少了一些内容
for (var i = 0; i < persec; i = i + persec)
totalCount = setInterval(function() {
    var persec = parseInt($("#persec").text(), 10);
    if (persec > 0) {
        $("#totalholder").click();
    }
}, 1000);