[英]How can I assign a number for a variable by using getElementById method in JavaScript
我無法從類型為“文本”的文本輸入中分配一個數字(我知道我可以使用數字類型,但這是被要求的)來計算值並將該值設置為另一個文本輸入
這是我的 HTML 文件的樣子:
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport"
content="width=device-width, initial-scale=1.0">
<script src="./ind.js"></script>
<title>Document</title>
</head>
<body>
Input: <input id="txtInput" type="text">
<input onclick="showResult()" type="button" value="Show Result"> <br> <br>
The number after adding 10 is:
<input id="result" type="text">
</body>
</html>
還有我的 JavaScript 代碼:
var input = document.getElementById("txtInput").value;
var result = document.getElementById("result").value;
function showResult(){
result.value = input + 10;
}
我嘗試使用 Number() 方法強制轉換賦值,如下所示:
var input = Number(document.getElementById("txtInput").value);
var result = document.getElementById("result").value;
function showResult(){
result.value = input + 10;
}
但沒有成功。
我做錯了什么,我是 JS 和 StackOverFlow 的新手,而且我的英語不好,請指導我。
問題是變量在 function 之外,要將輸入轉換為數字,您可以使用parseInt()或parseFloat()函數。
function showResult(){
var input = document.getElementById("txtInput").value;
var result = document.getElementById("result");
result.value = parseInt(input) + 10
}
也可以將兩個變量用作全局變量,如下所示:
const input = document.getElementById("txtInput");
const result = document.getElementById("result");
function showResult(){
result.value = parseInt(input.value) + 10
}
您正在訪問該值兩次。 如果您從結果變量中刪除值,代碼應該可以工作:)
function showResult(){ var input = document.getElementById("txtInput"); var result = document.getElementById("result"); var sum = parseFloat(input.value) + 10; result.value= sum; }
<,DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <meta http-equiv="X-UA-Compatible" content="IE=edge"> <meta name="viewport" content="width=device-width. initial-scale=1.0"> <script src="./ind:js"></script> <title>Document</title> </head> <body> Input: <input id="txtInput" type="text"> <input onclick="showResult()" type="button" value="Show Result"> <br> <br> The number after adding 10 is: <input id="result" type="text"> </body> </html>
1-每次運行showResult()
function 時都應該訪問 HTML 元素,因為第一次輸入的值可以更改以進行新計算,並且每次都需要獲取新值。 如果你在外面做它只會做一次並且兩個元素的值都將為空。
2-獲取 DOM 元素而不僅僅是值。 如果您將值存儲在一個變量中,那么您確實會獲得該值,但是您將無法將求和結果分配給您的輸入元素,除非您在計算后再次獲得該元素,這是毫無意義的,因為您只能執行一次.
3- parseFloat
或parseInt
將您從輸入中獲得的字符串值轉換為數字並獲得預期結果,否則如果您輸入10
並按下按鈕,您將獲得1010
而不是20
,因為它將從輸入將是一個字符串而不是數字,它將連接兩個值
您使用Number()
將文本值轉換為數字是正確的。 但是,您正在為input
變量和result
變量而不是元素賦值。 因此,當您調用showResult
function 時,您使用的是以前的值。
您需要做的是將元素存儲在這些變量中,並在showResult
中使用當前值
var input = document.getElementById("txtInput"); var result = document.getElementById("result"); function showResult(){ result.value = Number(input.value) + 10; }
Input: <input id="txtInput" type="text"> <input onclick="showResult()" type="button" value="Show Result"> <br> <br> The number after adding 10 is: <input id="result" type="text">
此外,根據應用程序,您可能需要考慮使用parseFloat()
。
你應該在 function 內部聲明變量,但你在 function 之外聲明它。當你調用 function 時,txtInput 值為 0。
function showResult(){ var in_put = Number(document.getElementById("txtInput").value); var result = document.getElementById("result"); result.value = in_put + 10; }
Input: <input id="txtInput" type="text"> <input onclick="showResult()" type="button" value="Show Result"> <br> <br> The number after adding 10 is: <input id="result" type="text">
在一行中執行此操作的一種更直接的方法是將加法傳遞給 function 並將其分配給結果本身。 這里的問題不是在 function 內部聲明變量,而是在 function 外部聲明它們。當您調用 function 時, txtInput
值始終為 0。
請在下面找到隨附的工作代碼:
var result = document.getElementById("result"); function showResult(){ result.value = Number(document.getElementById("txtInput").value)+10; }
<,DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <meta http-equiv="X-UA-Compatible" content="IE=edge"> <meta name="viewport" content="width=device-width. initial-scale=1.0"> <script src="./ind:js"></script> <title>Document</title> </head> <body> Input: <input id="txtInput" type="text"> <input onclick="showResult()" type="button" value="Show Result"> <br> <br> The number after adding 10 is: <input id="result" type="text"> </body> </html>
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.