2017-04-01 3 views

답변

8

var x = 0; 
 
var onclick = function() { 
 
    console.log("x = " + ++x); 
 
};
<button type="button" onclick="">Click</button>

그럼 당신은 전역 객체 window 재산 onclick로 변환 전역 변수 onclick을 설정합니다. 당신이 직접 설정하는 것처럼 이것은 기본적으로 동일합니다

window.onclick = function() { 
    console.log("x = " + ++x); 
}; 

을 그리고 당신은 전체 window 개체에 대한 클릭 이벤트를 설정하기 때문에, 그것은 (버튼 클릭에 있지만, 문서 내에서 아무것도에 클릭 할뿐만 아니라 실행됩니다 이벤트 전파가 중지되지 않는 한).

+0

[* event.stopPropragation *] (https://developer.mozilla.org/en/docs/Web/API/Event/stopPropagation)은 청취자를 지나서 멈추고 청취자에게 도달하는 것을 멈추지 않습니다. 리스너로부터 만 호출 될 수 있기 때문에 먼저 리스너에 도달해야합니다. 따라서 "* 미리 이벤트 청취가 다른 청취자에 의해 중지되지 않는 한 *". ;-) – RobG

+1

'var'로 "정의"해도? 그거 알아두면 좋을거야. 나는 OP와 같은 실수를 할 수 있었다고 생각한다! –

+0

@MrLister이 경우 우리는 전역 범위에 있으므로'var'는 전역 변수를 설정합니다. 이 코드가 함수 안에 있다면, 당연히'window.onclick'을 설정하지 않을 것입니다. – dfsq

0

@ dfsq가 언급 한대로 var onclick=을 수행하면 window.onclick이 생성됩니다. 비슷한 메모에서 :

var onerror = function() { 
 
    console.log("ERROR HAPPENED!"); 
 
};
<button type="button" onclick="ThisFunctionIsNotDefined()">Click</button>

관련 문제