我想让用户输入最小值和最大值,然后我尝试从最小值到最大值生成数字并将结果保存到剪贴板中。
但是,我总是得到Uncaught ReferenceError: generateNumbers is not defined
并且无法解释原因。
window.onLoad = function()
{
function generateNumbers()
{
var min = document.getElementById("min").value;
var max = document.getElementById("max").value;
var result = "";
for(var i=min; i < max; i++ )
{
result = result + i + ";";
}
copyToClipboard(result);
console.log(result);
}
function copyToClipboard(text)
{
window.prompt("Copy to clipboard: Ctrl+C, Enter", text);
}
}
&#13;
<label>MIN: </label><input type="text" id="min"/><br>
<label>MAX: </label><input type="text" id="max"/><br>
<button onclick="generateNumbers">send</button>
&#13;
JSFIDDLE: https://jsfiddle.net/n303o8tz/1/
已解决的JSFIDDLE: https://jsfiddle.net/n303o8tz/4/
答案 0 :(得分:1)
问题是,函数generateNumbers
不在全局范围内。可以通过向按钮添加事件侦听器而不是使用onClick属性来解决此问题:
document.getElementById("mybutton").addEventListener("click",generateNumbers);
function generateNumbers()
{
var min = document.getElementById("min").value;
var max = document.getElementById("max").value;
var result = "";
for(var i=min; i <= max; i++ )
{
result = result + i + ";";
}
copyToClipboard(result);
}
function copyToClipboard(text)
{
window.prompt("Copy to clipboard: Ctrl+C, Enter", text);
}
<label>MIN: </label><input type="text" id="min"/><br>
<label>MAX: </label><input type="text" id="max"/><br>
<button id="mybutton">send</button>
答案 1 :(得分:1)
您需要删除该window.onload部分,然后只需在按钮的onclick处理程序中调用该函数。
这是实现目标的一种方式:
<meta charset="UTF-8">
<script>
function generateNumbers() {
var min = parseInt(document.getElementById("min").value);
var max = parseInt(document.getElementById("max").value);
var result = "";
for (var i = min; i <= max; i++) {
result += i;
if (i < max) {
result += ";";
}
}
console.log(result);
copyToClipboard(result);
}
function copyToClipboard(text) {
window.prompt("Copy to clipboard: Ctrl+C, Enter", text);
}
</script>
<input id="min" type="text" value="1">
<input id="max" type="text" value="10">
<button onclick="generateNumbers()">Test</button>