函数 add() 带提示的数字
function add() numbers with prompt
我想使用提示简单地添加数字代码
function myFunction() {
var x = prompt("");
var add = (function () {
var counter = 0;
return function () {return counter += x;}
})();
document.getElementById("demo").innerHTML = add();
}
<button onclick="myFunction()">+</button>
<p id="demo"></p>
我从 IIFE 定义了函数,所以 counter
不会污染全局范围 - 然后,只是 return 函数,不需要任何更复杂的东西
const myFunction = (() => {
let counter = 0;
return () => {
counter += Number(prompt('Number?'));
document.getElementById("demo").innerHTML = counter;
};
})();
<button onclick="myFunction()">+</button>
<p id="demo"></p>
您的代码比需要的更复杂。不需要嵌套函数来进行数学运算。您还必须将 user-supplied 数据转换为数字(这可以通过在数据前添加 +
来完成)。
此外,您的代码不符合 best-practices 和标准。
查看下面代码中的注释。
// Get references to the HTML elements you'll use in JavaScript
var btn = document.getElementById("btn");
var output = document.getElementById("demo");
var counter = 0; // Running total will be here
// Set up event handling in JavaScript, not HTML
btn.addEventListener("click", function() {
counter += +prompt("What is the number to add?"); // Convert response to number and add to counter
output.textContent = counter; // Place result back into the document (use .textContent, not .innerHTML)
});
<button id="btn">+</button>
<p id="demo">0</p>
- 主要问题是在每个点击事件中创建函数
add
。
- 把它放在函数外面就行了
myFunction
.
- 您需要将输入的值转换为数字,即使用运算符
+
.
var add = (function() {
var counter = 0;
return function(x) {
return counter += +x;
}
})();
function myFunction() {
var x = prompt("");
document.getElementById("demo").innerHTML = add(x);
}
<button onclick="myFunction()">+</button>
<p id="demo"></p>
建议:
使用函数addEventListener
绑定事件click
.
// This is to illustrate the usage of 'addEventListener'.
// The function getElementsByTagName gets the whole set of elements button.
// In your case it doesn't make sense because you have only one.
// Like I said, this is just to illustrate.
var buttons = document.getElementsByTagName('button');
for (var btn of buttons) btn.addEventListener('click', myFunction);
//-----------
var add = (function() {
var counter = 0;
return function(x) {
return counter += +x /*Convert to number*/;
}
})();
function myFunction() {
var x = prompt("");
document.getElementById("demo").textContent = add(x);
}
<button>+</button>
<p id="demo"></p>
我想使用提示简单地添加数字代码
function myFunction() {
var x = prompt("");
var add = (function () {
var counter = 0;
return function () {return counter += x;}
})();
document.getElementById("demo").innerHTML = add();
}
<button onclick="myFunction()">+</button>
<p id="demo"></p>
我从 IIFE 定义了函数,所以 counter
不会污染全局范围 - 然后,只是 return 函数,不需要任何更复杂的东西
const myFunction = (() => {
let counter = 0;
return () => {
counter += Number(prompt('Number?'));
document.getElementById("demo").innerHTML = counter;
};
})();
<button onclick="myFunction()">+</button>
<p id="demo"></p>
您的代码比需要的更复杂。不需要嵌套函数来进行数学运算。您还必须将 user-supplied 数据转换为数字(这可以通过在数据前添加 +
来完成)。
此外,您的代码不符合 best-practices 和标准。
查看下面代码中的注释。
// Get references to the HTML elements you'll use in JavaScript
var btn = document.getElementById("btn");
var output = document.getElementById("demo");
var counter = 0; // Running total will be here
// Set up event handling in JavaScript, not HTML
btn.addEventListener("click", function() {
counter += +prompt("What is the number to add?"); // Convert response to number and add to counter
output.textContent = counter; // Place result back into the document (use .textContent, not .innerHTML)
});
<button id="btn">+</button>
<p id="demo">0</p>
- 主要问题是在每个点击事件中创建函数
add
。 - 把它放在函数外面就行了
myFunction
. - 您需要将输入的值转换为数字,即使用运算符
+
.
var add = (function() {
var counter = 0;
return function(x) {
return counter += +x;
}
})();
function myFunction() {
var x = prompt("");
document.getElementById("demo").innerHTML = add(x);
}
<button onclick="myFunction()">+</button>
<p id="demo"></p>
建议:
使用函数addEventListener
绑定事件click
.
// This is to illustrate the usage of 'addEventListener'.
// The function getElementsByTagName gets the whole set of elements button.
// In your case it doesn't make sense because you have only one.
// Like I said, this is just to illustrate.
var buttons = document.getElementsByTagName('button');
for (var btn of buttons) btn.addEventListener('click', myFunction);
//-----------
var add = (function() {
var counter = 0;
return function(x) {
return counter += +x /*Convert to number*/;
}
})();
function myFunction() {
var x = prompt("");
document.getElementById("demo").textContent = add(x);
}
<button>+</button>
<p id="demo"></p>