[英]JavaScript define variable outside function
我試圖做一個變量,可以用html <input type="number">
繼續添加數字。
我希望通過單擊帶有輸入值的按鈕來更改變量。 再次單擊按鈕,我希望變量將第二個輸入添加到先前更改的數字。
使用以下代碼,我得到帶有輸入值的NaN消息,因為var num
是未定義的:
<body>
<span id="number"></span>
<input id="addnum" type="number" style="width:60px; height:20px;">
<button onclick='add()'>Add</button>
<script>
var num = 0;
window.onload = function numstart() {
document.getElementById('number').innerHTML = num;
}
function add() {
var addnum = parseInt(document.getElementById("addnum").value);
var num = num + addnum;
document.getElementById('number').innerHTML = num;
}
</script>
</body>
但是如果我定義var num = 0;
在函數中,每次調用函數時,數字都會重置。 如何在函數中定義變量num而不在調用時重置其值?
您正在add()
函數中重置num
,這沒有多大意義:
var num = num+addnum;
意思是“創建一個新變量num,其值為num + addnum,但是等等,您剛剛定義了num,所以...”
您要引用全局變量。 嘗試這個:
num += addnum;
要么
num = num+addnum;
你可以做這樣的事情
<body>
<span id="number"></span>
<input id="addnum" type="number" style="width:60px; height:20px;">
<button onclick='add()'>Add</button>
<script>
var num = 0;
window.onload = function numstart() {
document.getElementById('number').innerHTML = num;
}
function add() {
var addnum = parseInt(document.getElementById("addnum").value);
num = num + addNum;
document.getElementById('number').innerHTML = num;
}
</script>
發生了一些棘手的起吊事情,使您感到困惑。 您的代碼與此等效:
function add() {
var addnum = parseInt(document.getElementById("addnum").value);
var num;
num = num + addnum;
document.getElementById('number').innerHTML = num;
}
現在為什么它很明顯num
的功能塊中未定義, num
聲明,但沒有定義 ,因此它的undefined
,以及局部聲明陰影外num
。 因此,您當然會得到NaN
。
修復很簡單,只需刪除var
關鍵字即可直接與外部范圍num
。
嘗試這個:
<html>
<head>
<script>
function add() {
document.getElementById('number').innerHTML = parseInt(document.getElementById('number').innerHTML)+1;
}
</script>
</head>
<body>
<span id="number"></span>
<input id="addnum" type="number" style="width:60px; height:20px;">
<button onclick='add()'>Add</button>
</body>
</html>
之所以遇到這個問題,是因為每次單擊時,函數都會重新開始,然后結束,並釋放其分配的內存空間。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.