生成数字并将其写入剪贴板

时间:2016-08-08 18:38:25

标签: javascript

我想让用户输入最小值和最大值,然后我尝试从最小值到最大值生成数字并将结果保存到剪贴板中。

但是,我总是得到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;
&#13;
&#13;

JSFIDDLE: https://jsfiddle.net/n303o8tz/1/

已解决的JSFIDDLE: https://jsfiddle.net/n303o8tz/4/

2 个答案:

答案 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>