2013-10-21 5 views
1

이러한 유형의 경우 addEventListener을 사용해야합니까?addEventListener를 사용해야합니까?

<input id="input" type="file" onchange="fun()> 

또는

document.getElementById("input").addEventListener("change", function() { 
    fun(); 
}); 

그 이유는 무엇입니까?

+0

당신이 IE8에서 지원을 원하는 경우 아래, 당신하여 addEventListener에 대한 지원을 추가하기 위해 "polyfill"을 사용해야합니다 . Google "addEventListener polyfill"을 사용하여 사람들이 만든 솔루션을 찾으십시오. – Frug

답변

3

onchange 속성은 fun 기능이 전역 범위에 있어야합니다. 더 큰 응용 프로그램에서는 응용 프로그램이나 외부 라이브러리에서 같은 이름의 다른 함수가있을 수 있으므로이 문제를 피하고자합니다. 또는 페이지에서 여러 번 사용되는 구성 요소를 작성한다고 상상해보십시오.

addEventListener이 같은 폐쇄에 싸여 수 있으며 분리 된 구성 요소 내에서 사용할 수 :

(function(){})(
    function fun(){ 
     // Now other components can also have a `fun` function, without causing confusion. 
     // `fun` is only defined inside the IIFE (the (function(){})() wrapper around the module). 
    } 
    document.getElementById("input").addEventListener("change", function() { 
     fun(); 
    }); 
); 
+1

플러스'addEventListener'를 사용하면 여러 이벤트를 추가 할 수 있으므로'this' 나'event'를 패스하는 것을 잊어 버릴 염려가 없습니다. 또한 어쨌든 인라인 핸들러에서 [Unobtrusive JavaScript] (http://en.wikipedia.org/wiki/Unobtrusive_JavaScript)를 사용하는 것이 좋습니다 :-) –

관련 문제