Javascript jQuery单击按钮上的事件不';t将值赋给变量

Javascript jQuery单击按钮上的事件不';t将值赋给变量,javascript,jquery,html,Javascript,Jquery,Html,我正在编写一个计算器,我正在试图得到“.”这是分配给按钮的值。单击按钮时,我希望将按钮的值放入变量中,然后将其显示在div的内容中 对于数字,我检索结果,但对于“.”不会发生 这里是我的代码笔工作的链接:[javascript计算器][1] $('button').click(function(){ input = $(this).val(); if (!isNaN(eval(input)) || input === "."){ console.log("input

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

对于数字,我检索结果,但对于“.”不会发生

这里是我的代码笔工作的链接:[javascript计算器][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);
    }
});

值仅与输入元素关联,因此
.val()
不会为您提供按钮的值属性。但是由于
按钮值
是一个
属性
,因此需要在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>


您好
问题:由于
按钮
元素不是
输入类型
您将无法通过在元素上使用
.val()
来获取其值

解决方案: 使用按钮上的
.attr
获取
值属性中的数据

 input = $(this).attr('value');
注意:为了不在学习js的过程中破坏您的旅程,我考虑只修复您所问的问题,而不是纠正可能出错的一切;)

考虑一下这个问题:

这就是我最后写的,让程序“显示”文本框中的数字和浮点

    $('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()

3-我跳过了对原始代码中的每个输入调用
eval
,因为如果您尝试计算浮点值,它将不起作用
,这将留给您考虑另一个修复方法;)


希望这有帮助。

按钮通常没有值缺少代码笔link@Pierre-LoupPagniez您应该阅读:.attr(“value”)它可以有一个带有单词“value”的属性,但这并不意味着可以使用.val()调用按钮值,去阅读你发布的链接的答案我在哪里说过按钮值可以用
.val()
调用?我只是说
value
是我用attr(“value”)更改的标签
按钮的有效属性,但它仍然不起作用。我看到它没有输入if语句,因为我在if中放了一个console.log(input),它没有返回任何内容。
input = $(this).text();