使用javascript计算得出的总和为零

问题描述 投票:2回答:4

var num1=document.getElementById("number1");
var num2=document.getElementById("number2");

var k=Number(num1.value);
var l=Number(num2.value);

function add(){
    onCout(k,l,function result(a,b){
                return a+b;
    });
}



function onCout(c,d,callback){
    var result=callback(c,d);
    output.innerHTML=result;
}
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
</head>
<body>
   Num1: <input type="text" id="number1" />
   Num2: <input type="text" id="number2" />
   <div id="output"></div>
   <button id="add" onclick="add()">Add</button>
</body>
</script>
</html>

我想在用户单击添加按钮时计算两个输入文本字段的总和。但是当我单击console.log(k);我得到了[[zero。我不知道它变成了零。我还搜索了如何从文本字段中获取值,而他们的获取方式是使用document.getElementById("id") .value。我的结果没有到来。

javascript html
4个回答
3
投票
在加法函数中获取kl的值。那是因为在单击按钮之前,这些值是空的

var num1 = document.getElementById("number1"); var num2 = document.getElementById("number2"); function add() { var k = Number(num1.value); var l = Number(num2.value); onCout(k, l, function result(a, b) { return a + b; }); } function onCout(c, d, callback) { var result = callback(c, d); output.innerHTML = result; }
Num1: <input type="text" id="number1" /> Num2: <input type="text" id="number2" />
<div id="output"></div>
<button id="add" onclick="add()">Add</button>
您将获得0,因为最初这些字段为空,并且Number('')将给出0

var num1 = document.getElementById("number1"); var num2 = document.getElementById("number2"); var k = Number(num1.value); var l = Number(num2.value); console.log(num1.value, num2.value) // value is empty string console.log(k, l); // NUmber('') is 0 function add() { onCout(k, l, function result(a, b) { return a + b; }); } function onCout(c, d, callback) { var result = callback(c, d); output.innerHTML = result; }
Num1: <input type="text" id="number1" /> Num2: <input type="text" id="number2" />
<div id="output"></div>
<button id="add" onclick="add()">Add</button>

2
投票
您得到0是因为您在页面加载时获得k和l的值,而不是在单击按钮时被调用的add函数之内。

1
投票
您应该在函数内部获取更新的值,而不是在加载时获取缩写的首字母,这可以按照以下步骤进行:

function add(){ var k=Number(num1.value); var l=Number(num2.value); onCout(k,l,function result(a,b){ return a+b; }); }


0
投票
var k=Number(num1.value); var l=Number(num2.value);
该值必须在函数add()中获取,因为这些值是动态的。 

在所显示的代码中,值仅被提取一次,这使得它们仅指向初始值,并且不会随用户输入而动态更改

var num1=document.getElementById("number1"); var num2=document.getElementById("number2"); function add(){ var k=Number(num1.value); var l=Number(num2.value); onCout(k,l,function result(a,b){ return a+b; }); } function onCout(c,d,callback){ var result=callback(c,d); output.innerHTML=result; }
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
</head>
<body>
   Num1: <input type="text" id="number1" />
   Num2: <input type="text" id="number2" />
   <div id="output"></div>
   <button id="add" onclick="add()">Add</button>
</body>
</script>
</html>
© www.soinside.com 2019 - 2024. All rights reserved.