我试图通过带参数的函数将文本框中的数字与其他值相乘。出于某种原因,我不断得到“NaN”。
以下是代码的淡化版本:
function calculate(a, b, c, d) {
var num1 = a * b;
var num2 = num1 * a;
document.write(num1);
document.write(num2);
}
<input type="number" id="apple" min="0" value="0">
<input type="button" onclick="calculate('apple','1.99','2','5')" value="Add to Order">
document.write
行只是用于测试目的。我只是不知道为什么num1
和num2
会回复“NaN”。另外,我尝试a.value
和b.value
无效。
答案 0 :(得分:1)
您正在使用String&#39; apple&#39;它不能成倍增加。 在这种情况下,您需要获取输入字段中的值:
var appleVal = document.getElementById('apple').value;
或使用&#39; a&#39;变量而不是:
var appleVal = document.getElementById(a).value;
提示:使用parseFloat
函数尝试创建一个字符串:
https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/parseFloat
答案 1 :(得分:0)
'apple'
只是文字,您需要传递:
document.getElementById('apple').value
。
在您的代码中:
onclick = "calculate(document.getElementById('apple').value,'1.99','2','5')"
答案 2 :(得分:0)
试试这个,
<input type="number" id = "apple" min = "0" value = "0">
<input type="button" onclick = "calculate(1.99,2,5)" value = "Add to Order">
<script>
function calculate(b,c,d){
var a = document.getElementById("apple").value;
var num1 = a*b;
var num2 = num1*a;
document.write(num1);
document.write(num2);
}
</script>
你的错误是,你正在成倍增加&#34; apple&#34;带数字的字符串。