جافا سكريبت Getelementbyid () لا يعمل [مكررة
-
11-09-2019 - |
سؤال
هذا السؤال لديه بالفعل إجابة هنا:
لماذا 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 = ...
لجعل هذه الوظيفة تنفذ فقط بعد تحليل المستند بأكمله.
لا تنتمي إلى StackOverflow