سؤال

هذا السؤال لديه بالفعل إجابة هنا:

لماذا refButton احصل على null في رمز جافا سكريبت التالي؟

<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>

نصائح أخرى

تحتاج إلى وضع جافا سكريبت في نهاية علامة الجسم.

لا تجد ذلك لأنه ليس في دوم حتى الآن!

يمكنك أيضا لفها في معالج حدث Onload مثل هذا:

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

لأنه عندما ينفذ البرنامج النصي للمتصفح لم يحلل بعد <body>, ، لذلك لا يعرف أن هناك عنصر مع الهوية المحددة.

جرب هذا بدلا من ذلك:

<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>

لاحظ أنك قد تستخدم كذلك addEventListener بدلا من window.onload = ... لجعل هذه الوظيفة تنفذ فقط بعد تحليل المستند بأكمله.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top