Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/google-chrome/4.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 parseInt-代码运行4次_Javascript_Parseint - Fatal编程技术网

Javascript parseInt-代码运行4次

Javascript parseInt-代码运行4次,javascript,parseint,Javascript,Parseint,对于这个函数,我试图计算$r变量的结果,并将它们显示在表单输入文本字段“otherHtmlIdName”中 if语句检查它们是否都有值,然后获取计算变量的值并更改输入字段。它工作得很好,问题是它连续工作4次,每次parseInt()一次 有没有办法让它跑一次?我也试过parseFloat和Number。没有帮助 [编辑]:由于parseInt的原因,这没有发生。在我的代码中,我对这个ID调用了4次click函数 $("#htmlIdName").click(function () { v

对于这个函数,我试图计算$r变量的结果,并将它们显示在表单输入文本字段“otherHtmlIdName”中

if语句检查它们是否都有值,然后获取计算变量的值并更改输入字段。它工作得很好,问题是它连续工作4次,每次
parseInt()
一次

有没有办法让它跑一次?我也试过
parseFloat
Number
。没有帮助

[编辑]:由于parseInt的原因,这没有发生。在我的代码中,我对这个ID调用了4次click函数

$("#htmlIdName").click(function () {
    var variableName = parseInt($r.ab3, 10) - parseInt($r.ab4, 10) + parseInt($r.sb3, 10) + parseInt($r.sb4, 10);
    if ($r.ab3 && $r.ab4 && $r.sb3 && $r.sb4) {
        $("#otherHtmlIdName").val(variableName);
        $("#otherHtmlIdName").change();
    };
});

如果您询问如何防止调用
parseInt()
4次,您可以像这样使用
map
函数:

$("#htmlIdName").click(function() {
  //convert object of strings to array of ints
  var arr = $.map($r, function(el) {
    return +el
  });

  //perform same calculations as before
  var variableName = arr[0] - arr[1] + arr[2] + arr[3];

  if ($r.ab3 && $r.ab4 && $r.sb3 && $r.sb4) {
    $("#otherHtmlIdName").val(variableName);
    $("#otherHtmlIdName").change();
  };
});
工作示例:

试试:

$("#htmlIdName").off().on('click', function() {
    /* Your code here */
});

您的意思是,它对每一次
parseInt()
调用都“工作”一次,这到底是什么意思?你怎么知道?那没什么意义,你好。欢迎来到StackOverflow。我不确定我是否理解你的要求。你说click处理程序运行4次,或者你必须调用parseInt 4次?如果是后者,你真的没有选择,因为你要解析的数字是不同的(ab3,ab4,sb3,sb4)。您必须调用parseInt 4次。此外,如果您解析的变量之一不是数字字符串,则生成的
variableName
将是
NaN
。在将
#otherHtmlIdName
设置为字符串“NaN”之前,您可能需要检查一下。我在代码中设置了断点,并用Firebug观看了它。整个功能进行了4次。我猜它是由parseInt()的4个不同值引起的,因为我已经排除了它不是由“if”检查引起的。很抱歉,我是n00b,但我不确定我是否理解它是如何工作的。我有几十个jquery调用来输入前面代码中的字段ID,这些设置类似于$(“#otherHtmlIdName”)的设置,我修改了其中的一些以生成一个$r变量,这样我就可以计算这个算法了。我可以用不同的方式将它们分组,而不是将ID名称放入$r变量中吗?为什么要计算整数而不是像以前那样计算字符串?
map
将传递给对象/数组中每个元素的函数应用于该函数。这个函数所做的一切就是在对每个元素应用一元+后返回元素,这会自动将其解析为int(只要字符串已经是整数形式)。它不能与您的代码一起工作的原因是您使用的是二进制+,它不应用转换。你可以在这里读到,我不知道这是否有效。由于#htmlIdName是一个按钮,它会将您带到显示我正在查找的输入的页面,因此会关闭该按钮。我将此标记为答案,因为您在上面的评论中实际回答了我的问题。我有$(“#htmlIdName”)。在我的代码中单击被调用4次。我需要找到其他东西来附加它。@H311B0Y
off()
所做的是在附加上面的“click”处理程序之前删除任何已注册的处理程序。这会起作用,但如果您能找出处理程序被多次注册的原因,并在不需要的情况下更正代码,可能会更好。