按钮上的jQuery单击事件不会将值赋给变量

时间:2016-12-21 08:19:59

标签: javascript jquery html

我正在编写一个计算器,我试图获得"。"这是分配给按钮的值。单击按钮时,我想将按钮的值放在变量中,然后将其显示在div的内容中。

对于数字,我检索结果但是对于"。"没有发生。

以下是我的codepen工作的链接:[javascript calculator] [1]

$('button').click(function(){
    input = $(this).val();

    if (!isNaN(eval(input)) || input === "."){
      console.log("input: "+input);
      current += input;
      log = current;
      result += input;
    $("#answer").text(current);
    $("#history").text(result);
    }
});

3 个答案:

答案 0 :(得分:3)

值仅与输入元素相关联,因此.val()不会为您提供按钮的value属性。但由于button valueattribute,因此您需要在jquery中使用.attr()方法。这应该这样做

<script type="text/javascript">
   $('button').click(function(){
    input = $(this).attr("value")

    if (input === "." || !isNaN(eval(input))){
      console.log("input: "+input);
      current += input;
      log = current;
      result += input;
    $("#answer").text(current);
    $("#history").text(result);
    }
});
</script>

$('button').click(function(){
        var input = $(this).attr("value")
    
        if ( input === "." || !isNaN(eval(input))){
          console.log("input: "+input);
          
        }
  });

 
It is failing for you because when you test `!isNan(eval(input))` where `input = "."` your code breaks. change it to `if ( input === "." || !isNaN(eval(input))){` 
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<button value = ".">Hello</button>

答案 1 :(得分:1)

问题:由于button元素不属于input类型,因此您只能在元素上使用.val()来获取其值。

<强>解决方案:  使用按钮上的.attr获取value属性

中的数据
 input = $(this).attr('value');

答案 2 :(得分:0)

注意:为了在学习js时不破坏你的旅程,我考虑修复你要问的问题,而不是纠正可能出错的一切;)

考虑这个jsfiddle:https://jsfiddle.net/hakeero/cw82r1se/3/

这就是我最终写完并使节目“显示”的原因。数字和文本框中的浮点数。

    $('button').click(function(){
    input = $(this).text();

    if (input || input === "."){
      console.log("input: "+input);
      current += input;
      log = current;
      result += input;
    $("#answer").text(current);
    $("#history").text(result);

    }
});

关于解决方案的说明:

1-为简单起见,我只添加了1和2的按钮。

2-正确阅读按钮文本,您只需使用jquery方法text()

input = $(this).text();

3-我已跳过在原始代码中的每个输入上调用eval,因为如果您尝试评估浮点.它将无效,会留给您考虑另一种解决办法;)

希望这会有所帮助。