اشیا در جاوااسکریپت
سوال جدیدسلام دوستان، من یک Method در یک کلاس در جاوااسکریپت درست کردم که یک Return ساده داره، ولی نمیدونم چرا کار نمیکنه!
class myClass {
constructor() {
}
myMethod (element) {
return element.innerHTML;
}
}
و توی اسکریپت فراخوانی اینجوری نوشتم:
<script type="text/javascript">
var myElement = document.getElementById("demo");
var mC = new myClass();
alert(mC.myMethod(myElement));
</script>
<p id="demo">Hello World!</p>
که طبیعتاً باید توی نتیجه بهم اینو بده:
alert("Hello World!");
ولی بهم Undefiend میده!
اگه میشه کمکم کنید. واقعاً به این نیاز دارم…
با تشکر 😉
سلام. مشکل از کد جاوااسکریپت شما نیست. مشکل شما از محل اجرای کد هست. وقتی شما متغیر myElement رو تعریف میکنید در واقع مقدارش null هست چون هنوز اون عنصر بارگزاری نشده. عنصر p رو اگه بالای عنصر script قرار بدید یا عنصر script رو پایین عنصر p قرار بدید کد به درستی کار میکنه.
به همین علت هست که در بعضی از صفحات کد جاوااسکریپت خودشون رو زیر تمام عناصر (پایین تگ body) فراخوانی میکنن تا به این مشکل برنخورن. البته ویژگی defer میتونه از این مشکل جلوگیری کنه و باعث میشه اول کل عناصر صفحه باگزاری شده و بعد اسکریپت ها اجرا بشن (البته منظورم تصاویر و ویدیو نیست) نمونه عنصر با ویژگی defer:
<script type="text/javascript" src="script.js" defer></script>
واقعاً ممنون؛