문제

refButton 을 얻 null 다음 JavaScript 코드가?

<html>
<head>
    <title></title>
    <script type="text/javascript">
        var refButton = document.getElementById("btnButton");

        refButton.onclick = function() {
            alert('I am clicked!');
        };
    </script>
</head>
<body>
    <form id="form1">
    <div>
        <input id="btnButton" type="button" value="Click me"/>
    </div>
    </form>
</body>
</html>
도움이 되었습니까?

해결책

당신이 당신의 기능을 호출하는 시점에서, 페이지의 나머지 부분은 렌더링되지 않았으므로 그 시점에서 요소가 존재하지 않습니다. 당신의 기능을 호출하십시오 window.onload 아마도. 이 같은:

<html>
<head>
    <title></title>
    <script type="text/javascript">
        window.onload = function(){
           var refButton = document.getElementById("btnButton");

            refButton.onclick = function() {
                alert('I am clicked!');
            }
        };
    </script>
</head>
<body>
    <form id="form1">
    <div>
        <input id="btnButton" type="button" value="Click me"/>
    </div>
    </form>
</body>
</html>

다른 팁

JavaScript를 넣어야합니다 바디 태그의 끝에서.

아직 DOM에 있지 않기 때문에 찾지 못합니다!

다음과 같은 Onload 이벤트 핸들러에서 래핑 할 수도 있습니다.

window.onload = function() {
var refButton = document.getElementById( 'btnButton' );
refButton.onclick = function() {
   alert( 'I am clicked!' );
}
}

기 때문에 스크립트를 실행하는 브라우저가 아직 분석 <body>, 다,그래서 그것을 알지 못하는 요소가 있으로 지정된 id 입니다.

이 시도하는 대신:

<html>
<head>
    <title></title>
    <script type="text/javascript">
        window.onload = (function () {
            var refButton = document.getElementById("btnButton");

            refButton.onclick = function() {
                alert('Dhoor shala!');
            };
        });
    </script>
    </head>
<body>
    <form id="form1">
    <div>
        <input id="btnButton" type="button" value="Click me"/>
    </div>
</form>
</body>
</html>

참고는 당신이뿐만 아니라 사용 addEventListenerwindow.onload = ... 하는 기능을 실행한 후 전체 문서를 구문 분석됩니다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top