2015-01-08 2 views
0

dom을 사용하여 선택한 < > 요소가 있습니다. 콘솔 (크롬 개발 도구)에서JS 요소 onclick 이벤트가 실행되지 않습니다.

var link = document.createElement("a"); 
var ce = function (e) { 
    alert("A"); 
} 
link.onclick = ce; // Or link.addEventListener("click", ce); 
console.log(ce); 
console.log(link.onlick); 

, 나는 다음을 참조하십시오 : 나는 다음과 같은 코드가 다음

function (e) { alert("A"); } 

undefined 

을하면 요소를 클릭을 이벤트 해고하지 않는다. 콘솔에서 같은 요소에 onclick을 적용하는 것으로 나타났습니다. 그러나 에 올바르게 적용됩니다.

이 이벤트를받는 방법은 무엇입니까?

+0

글쎄,'link' 란 무엇입니까? –

+0

'var link = document.createElement ("a"); ' –

+2

onclick의 철자가 틀렸기 때문에 정의되지 않았습니다. HanletEscaño @ –

답변

1

사실은,이 문제는 오타로 인해 발생 :

console.log(link.onlick);// onlick !! 

대신에 :

var link = document.createElement("a"); 
     var ce = function (e) { 
     alert("A"); 
     } 
link.onclick = ce; // Or link.addEventListener("click", ce); 
link.text="Click me!!"; 
document.body.appendChild(link); 
console.log(link.onclick);// here you will get function (e) { alert("A"); } 

:

console.log(link.onclick); 

여기에 전체 코드입니다 그리고 이제는 잘 작동합니다. here's a DEMO.

+0

작동 'console.log'에 대해'function (e) {alert ("A");}'를 기록하지만 요소를 클릭해도 함수를 호출하지 않습니다. –

+0

@ user3053430 : 사실 모든 문제는 오타입니다! 내 편집 좀 봐. –

+0

오타를 수정 한 후 올바르게 console.log를 기록했지만 링크를 클릭해도 함수가 여전히 호출되지 않았습니다. 나는 그것을 고쳤다. 나는 그것을 사용하는 범위에 문제가 있었다. –

1

onclick 이벤트를 바인딩하기 전에 DOM에 만든 링크를 추가해야합니다.

일단 이렇게하면 onclick 이벤트의 로그에 대해 더 이상 정의되지 않게됩니다. 당신이 가지고 있기 때문에

var link = document.createElement("a"); 
var ce = function (e) { 
    alert("A"); 
} 
// Add link to page 
document.body.appendChild(link); 
link.onclick = ce; // Or link.addEventListener("click", ce); 
console.log(ce); 
console.log(link.onclick); 
관련 문제