我正在编写一个计算器,我试图获得"。"这是分配给按钮的值。单击按钮时,我想将按钮的值放在变量中,然后将其显示在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);
}
});
答案 0 :(得分:3)
值仅与输入元素相关联,因此.val()
不会为您提供按钮的value属性。但由于button value
是attribute
,因此您需要在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
,因为如果您尝试评估浮点.
它将无效,会留给您考虑另一种解决办法;)
希望这会有所帮助。