2013-10-07 5 views
0

사용자가 입력 할 때 텍스트 입력 상자에 입력 한 값을 다른 텍스트 입력 상자로 전달하려고했습니다. jsfiddle에서 모든 작업을 할 수 있지만 다른 곳에서는 사용할 수없는 이유가 있습니다. 순수 javascript가 아닌 jquery를 사용하고 있습니다.자바 스크립트로 자동 입력 값 전달

(function() { 
var var1 = document.getElementById('imput1'), 
    var2 = document.getElementById('gift_card_recipient'), 
    callback = function() { 
     var2.value = this.value; 
    }; 

if (var1.addEventListener) { 
    var1.addEventListener('keyup', callback); 
} else { 
    var1.attachEvent('onkeyup', callback); 
} 
}()); 
:

그래서, 여기에 두 번째 상자에 내 HTML 코드

<input id="imput1" type="text" class="firstbox"> 
    <p>Box to Retrieve The Input</p> 
    <br /> 

    <input id="gift_card_recipient" type="text" class="replica" value="box1" /> 
    <input type="text" class="replica2" value="box2" /> 

내가 첫 번째 상자에서 사용자 유형으로 값을 전달하기 위해 사용하고있는 자바 스크립트입니다

다시 jsfiddle에서 작업 할 수있게되었는데, 어떻게 생겼는지 보여주는 데모입니다.하지만 html 파일이나 내 서버에서 PC를 사용하면 작동하지 않습니다. js 파일을 헤더에 연결하고 크롬에서도 검사합니다. 크롬에서 얻은 오류는 다음과 같습니다.

Uncaught TypeError: Cannot read property 'addEventListener' of null 

그 이유는 무엇입니까. 하지만 여기에 실제로 그것이 작동하는 내 jsfiddle입니다. 하지만 서버 또는 내 PC에는 없습니다. http://jsfiddle.net/C3SPM/

+0

어디에서 자바 스크립트 코드를 추가 하시겠습니까? 종료 태그 바로 전에 추가해보십시오. 아직 작성하지 않은 경우 ..! –

+0

나는 자바 스크립트를 파일 자체에 가지고 있는데 헤더를 통해 링크하고있다. – user2759977

답변

0

본문 끝 (또는 해당 요소 뒤에)에 스크립트 블록을 포함하십시오. 또는 onload/onDomReady 핸들러에서 코드를 래핑하십시오.

문제가 발생한 요소가 파싱되기 전에 코드가 실행 중이므로 document.getElementById('imput1')은 요소를 찾을 수 없기 때문에 null을 반환합니다. 바이올린에서 작동하는 이유는 기본적으로 jsfiddle이 JS를 onload 핸들러에 래핑하므로 코드가 실행될 때 이 파묻혀 있습니다 (왼쪽의 드롭 다운을 사용하여 jsfiddle에서이 설정을 변경할 수 있습니다) "프레임 워크 & 확장").

+0

그래서, 이것을 내 웹 사이트 나 페이지의 꼬리말에 넣으면 올바르게 실행됩니까? – user2759977

+0

이것은 바닥 글이 정의 된 위치에 따라 다릅니다. '

관련 문제