2016-06-30 2 views
1

누군가이 문제를 도와 줄 수 있습니까? 입력 이벤트 함수에서 바깥 함수로 var를 반환 할 것입니다.javascript 이벤트 함수에서 외부 함수로 값을 반환하는 방법

function takeInputText() { 

    var input = document.getElementById('inputText') 
    var newText; 

    input.onkeyup = function(e) { 

     var text = input.value; 
     if (e.which == 13) { 
      newText = text; 
      input.value = ''; 
      //return newText - I want to return 'newText' to 'takeInputText()' so i can 
           // use 'takeInputText()' as a variable 
     } 
    } 
} 
takeInputText(); 
+0

문제가 무엇입니까? 'newText' 변수는'takeInputText()'메소드에서도 접근 가능합니다. –

+0

이것은 중복되지는 않지만 [비동기 호출의 응답을 어떻게 반환합니까?] (http://stackoverflow.com/questions/14220321/how-do-i-return-the-response)에 대한 좋은 힌트가 있습니다. -from-an-asynchronous-call) – 4castle

+0

입력으로 무엇을하고 싶습니까? 나는 당신이 잘못된 방향으로 가고 있다고 가정합니다 ... – Rayon

답변

3

당신은 재생하고자하는 경우 사용자 입력 키 값을 입력 한 후 입력을 통해 keyup 이벤트를 바인딩하고 콜백 함수의 값을 조작하십시오. 입력 값을 전달할 수있는 다른 함수를 호출 할 수도 있습니다.

예 :

var input = document.getElementById('inputText'); 
 
input.onkeyup = function(e) { 
 
    var code = e.which || e.keyCode; 
 
    if (code == 13) { 
 
    appendInput(this.value); 
 
    this.value = ''; 
 
    } 
 
} 
 

 
function appendInput(value) { 
 
    var elem = document.createElement('h2'); 
 
    elem.textContent = value; 
 
    document.getElementById('preview').appendChild(elem); 
 
}
<input type="text" id="inputText"> 
 
<div id="preview"></div>

1

당신은 방금 input 요소에 keyup 수신기를 부착한다 당신이 takeInputText 내에서 일을하고 있기 때문에 변수로 takeInputText()을 사용할 수 없습니다와 기능 (undefined이 경우 반환) 즉시 반환합니다.

, 값을 활용 핸들러 내부의 상태가, 예를 들어, 사실 때 호출 할 함수에 인수로 변수를 전달하려면 :

input.onkeyup = function(e) { 
    var text = input.value; 
    if (e.which == 13) { 
     input.value = ''; 
     yourFunction(text); 
    } 
} 
관련 문제