2014-11-12 2 views
0

버튼을 클릭하면 onclick이 실행되지 않습니다. 나는 콘솔에서 그것을 시도하고 괜찮 았어. 누구든지 도와 줄 수 있습니까?자바 스크립트에서 onclick이 실행되지 않을 때

function customAlert(message) { 
    sect = document.createElement("section"); 
    sect.className = "alert"; 
    sect.innerHTML = message + "<br /><br />"; 

    var but = document.createElement("button"); 
    but.innerHTML = "Gotcha."; 
    but.onclick = "document.body.removeChild(sect);"; 

    sect.appendChild(but); 
    document.body.appendChild(sect); 

} 
+0

onclick 값은 문자열이 아닌 함수 여야합니다. – scunliffe

+0

@scunliffe 애트리뷰트를 HTML

+0

* 어떤 경우에는 작동하는 경우 ... 문자열로 ... 필자는 우연이라고 생각하며 (예 : eval()과 같은 빠른 '캐스팅'으로 인해 글로벌 일 가능성이 높음). https://developer.mozilla.org/en-US/docs/Web/API/GlobalEventHandlers.onclick – scunliffe

답변

3

이 구문을 사용한다 :

but.onclick = function() { 
    document.body.removeChild(sect); 
} 

그래서, 온 클릭이 property이다. 이것은 어떤 가치가 있음을 의미합니다. btn을 클릭하면 javascript (브라우저)는이 속성을 호출하지만 함수가 될 것으로 예상하고 실행될 일부 코드입니다. 대신 문자열을보고 "문자열"을 어떻게 처리해야할지 모릅니다.

+0

_why_에 대한 설명을 추가하여 원래 구문이 작동하지 않는지 확인하십시오. – Barmar

+0

설명이 추가되었습니다 –

+0

설명이 올바르지 않습니다. 문자열을 어떻게 처리해야하는지 알고 있는데, 'eval (string)'처럼 실행합니다. 변수가 전역 변수에서 평가되기 때문에 작동하지 않는 이유는 범위, 그리고 그는 지역 변수'sect'에 접근하기를 원한다. – Barmar

관련 문제