2014-09-25 2 views
1

:의 HTML DOM 추가 자바 스크립트 함수

document.form1.colorButton.onclick = setBGColor;` 

<input name="colorButton" type="button" 
     value="Change background color" 
     onclick="setBGColor();"/>` 

있다 속성에 추가하지()하지만 DOM을 사용할 때(). 왜 이런거야?

공식 문서에 대한 모든 참조가 도움이 될 것입니다.

+0

첫 번째는 함수이고 두 번째는 문자열입니다. 문자열은'eval()'을 사용하여 평가됩니다. – blgt

+2

@blgt : eval을 사용하지 않습니다. 문자열은 새 함수 객체의 본문이됩니다. –

+0

콘솔에서 setBGColor를 입력하면 setBGColor()가 포함 된 것을 볼 수 있습니다. –

답변

2

.onclick 버전에서는 .onclick 속성에 대한 JS 함수 참조에 대한 참조를 직접 할당합니다. 괄호를 제공하는 것은 오류 일 수 있습니다. 그 이유는 함수가 즉시 호출되고 그 결과가 이벤트 처리기에 할당되기 때문입니다.

document.form1.colorButton.onclick = function onclick(event) { 
    setBGColor(); 
} 

이 사실

당신이 인라인 방법을 사용하고보고하는 경우가 크롬 콘솔에서 볼 수있을 정확히 다음 "인라인"dom0이 방법에

는 결과 코드는 더 같다 document.form1.colorButton.onclick의 값으로

더 자세히 설명하기 위해 onclick 특성의 본문이 새 함수 안에 포함 된 다음이라는 속성에 할당 된 에 대한 참조가 포함됩니다. 에 괄호를 입력해야합니다. 그렇지 않으면 setBGColor() 함수가 호출되지 않습니다.