2016-08-08 2 views
2

사용자가 최소값과 최대 값을 입력하게하고 최소에서 최대까지 숫자를 생성하고 결과를 클립 보드에 저장하려고합니다.숫자를 생성하고 클립 보드에 쓰십시오.

그러나 나는 항상 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); 
 
    } 
 
}
<label>MIN: </label><input type="text" id="min"/><br> 
 
<label>MAX: </label><input type="text" id="max"/><br> 
 
<button onclick="generateNumbers">send</button>

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

이 해결 JSFIDDLE :https://jsfiddle.net/n303o8tz/4/

+2

그냥 사용'addEventListener' 자바 스크립트, 그것은 속성과 범위를 주변에 바이올린을 켜는 것보다 쉽다. – gcampbell

+5

window.onload 이벤트 내부에서 함수를 정의 할 필요가 없습니다. 문제가 발생했습니다. – JJJ

+4

@ManoDestra'generateNumbers'는 전역 범위에 없습니다. – gcampbell

답변

1

당신은 그 창로드 부분을 제거하고 단지에서 함수를 호출해야합니다 : 온 클릭 속성을 버튼에 이벤트 리스너를 추가하는 대신 사용하여이 문제를 해결할 수있다 귀하의 버튼의 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> 
1

문제 함수 generateNumbers는 전역 아니라고이다.

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

'document.getElementById ("mybutton")로 단순화해라. addEventListener ("클릭", generateNumbers);' –

+0

고마워, 고마워! – Black