اذهب إلى المحتوى

السؤال

نشر

مرحبا يا اساتذة كيف الحال ...

  1. لدي مشكلة تواجهني في الجافا سكربت 
  • document.getElementById("price").innerHTML = لا تعمل و الconsol بيطلع error
  • ياريت في احد يساعدني بالموضوع اكون ممنون

 

IMG_20210104_230514.jpg

IMG_٢٠٢١٠١٠٤_٢٣٠٦٢٦.jpg

Recommended Posts

  • 0
نشر

مرحبًا..

لاحظ أن ريالة الخطأ تذكر لك أنه لا يمكن استخدام التابع innerHtml لبيانات لها القيمة null، لذلك أرجو منك أن تتأكد من أنك قمت بكتابة ال id بطريقة صحيحة و من أن العنصر له id بالقيمة price بالفعل و ليس صنف.

إن لم تتمكن من حل المشكلة يمكنك أن تُرفق الأكواد الخاصة بك كاملة و سنقوم بمساعدتك

------------

أيضًا إذا كان السؤال مُتعلق بأحد دروس الدورات أرجو أن تطرحه في تعليق أسفل الدرس نفسه في المرات القادمة

شكرًا لك

  • 0
نشر (معدل)

مرحبا،

هل قمت بحفظ الملف قبل عرض الصفحة؟ (لاحظ أنه لم يتم حفظ التعديلات)

وتأكد هل يوجد عنصر لديك في صفحة HTML له المعرف id بقيمة price؟

<div id="price">
  your div
</div>

في حال استمرار المشكلة أرجو إرفاق الملفات كملف مضغوط. 

شكرا لك

تم التعديل في بواسطة Wael Aljamal
توضيح الإجابة
  • 0
نشر
بتاريخ 9 دقائق مضت قال Wael Aljamal:

<div id="price"> your div </div>

أرجو إضافة هذا الجزء إلى العنصر body وستعمل الصفحة.

لأن المشكلة هو كما ذكرتها

بتاريخ 10 دقائق مضت قال Wael Aljamal:

وتأكد هل يوجد عنصر لديك في صفحة HTML له المعرف id بقيمة price؟

بالتوفيق

  • 0
نشر
بتاريخ 10 ساعات قال Artube Dev:

 

 

IMG_20210104_232525.jpg

كما ذكرت أكواد Html الخاصة بك لا تحتوي على حاوية لها المعرف price لذلك لم تتمكن جافاسكريبت من العثور عليه و ذكرت لك في رسالة الخطأ أنه له القيمة null أي ليس له قيمة.

لحل هذه المشكلة يمكنك إضافة هذا الوسم إلى ال body في html و حفظ الملف و سيعمل كل شئ بالشكل الصحيح:

<div id="price"></div>

 

  • 0
نشر
بتاريخ 6 دقائق مضت قال Artube Dev:

 

IMG_20210104_232446.jpg

IMG_20210104_232525.jpg

في صفحة الـ HTML لديك لم يتم تعريف أي عنصر يحتوي على id بقيمة price كما تطلبين منه في جافاسكريبت.

لهذا يمكنك تعريف عنصر يحتوي على الـ id="price" وذلك لتظهر النتيجة داخل صفحة الويب.

يمكنك مثلًا إضافة عنصر العنوان div يحتوي الـ id الذي تريدين كالمثال التالي:

<div id="price"></div>

وسوف يتم طباعة الناتج داخله.

 

  • 0
نشر
بتاريخ 10 ساعات قال Artube Dev:

لقد قمت باضافة الكود الى ال HTML لاكن للاسف لم يحدث شيء 

هل قمت بحفظ الملف بعد التعديل و تحديث المتصفح بالضغط على أيقونة  refresh أو أزرار ctrl + R بعد التعديل؟

  • 0
نشر
بتاريخ 4 دقائق مضت قال Artube Dev:

لقد قمت باضافة الكود الى ال HTML لاكن للاسف لم يحدث شيء 

هل قمت بإضافة كود HTML داخل عنصر <body> حيث يجب عليك إضافة العنصر <div> داخل العنصر <body>

كما في الشكل التالي.

<body>
  <div id="price"></div>
</body>

 

  • 0
نشر
بتاريخ 9 دقائق مضت قال Artube Dev:

هذه الملفات اشكركم جدا على المجهود 

index.html

test.js

يجب عليك أن تضعي عنصر <script> داخل عنصر <body> أسفل الصفحة حتى يتم تنفيذ الكود بالترتيب الصحيح.

ﻷن المتصفح يقوم بقرأة جافاسكريبت في البداية ولايرى العنصر price لهذا يرجع خطأ.

يجب أن يتعرف على العنصر الحاوي على الـ id أولًا من ثم الوصول إليه من خلال كود جافاسكريبت

<body>
    <div id="price"> your div </div>

	<script src="test.js"></script>
</body>

بهذا الشكل تحل المشكلة

  • 0
نشر
بتاريخ 13 ساعات قال Artube Dev:

هذه الملفات اشكركم جدا على المجهود 

index.html

test.js

مرحبا،

إن طريقة عمل المتصفح في قراءة شيفرات HTML هي تسلسلية من الأعلى للأسفل.

عند تضمين ملف جافا سكربت سيقوم بتنفيذه حتى نهايته ..

وعند الوصول لمكان إسناد قيمة المتحول myPrice لعنصر له المعرف id=price سيكون غير موجود في هذه اللحظة لأن المتصفح لم يصل للعنصر نفسه div في شيفرة HTML داخل body.

فنقوم بنقل جزء تضمين ملف جافا سكربت لآخر العنصر body ليتسنى له إنشاء العنصر div ثم تنفيذ الشيفرة الخاصة بجافا سكربت عليه.

تعديل آخر في اسم ملف التنسيق حيث نسيت وضع اقتباس حول الاسم (نسيت واحد منهم)

<link rel="staylsheet" href="file.css" type="text/css">
____________________________^

الملفات بعد التعديل والترتيب:

index.html

test.js

تعديل: يوجد فاصلة منقوطة في نهاية تعليمة تعريف myPrice يفضل استبدالها بفاصلة.وهذا لايسبب مشكلة، لأن في جافا سكربت ليس من الضروري كتابة var - let أما المتغيرات ليتم تعريفها. (المتغيرات التي بعد myprice)

بالتوفيق

  • 0
نشر

مرحباً،

سبب الخطأ هو أن أكواد الجافاسكربت حالياً يتم تنفيذها قبل أن تتحمل عناصر الصفحة و بالتالي عند البحث عن العُنصر ذو المُعرف price لم يكن موجود بعد على الصفحة و بالتالي فإن: 

document.getElementById("price")

تعود ب null و لا يُمكن تطبيق الخاصية innerHTML على null 

لحل المُشكل هناك عدة الطرق من بينها أن نُخبر javascript أن تنتظر حتى تتحمل الصفحة و ذلك عن طريق الكود التالي:

document.addEventListener("DOMContentLoaded", function(event) { 
  // هنا نضع الأكواد
});

أي بهذا الشكل:

document.addEventListener("DOMContentLoaded", function(event) { 
    //do work

    var myPrice = 1000; 

    myNewprice = 900,
    
    myDiscont = myPrice - myNewprice + 500; //1000 - 900 + 500 = 600
       
    


    document.getElementById("price").innerHTML = myPrice;

});

و بهذا الشكل لن يتم تنفيذ شيفرات الجافاسكربت إلا بعد تحميل كافة عناصر الصفحة.

الطريقة الثانية بنقل وسم الscript إلى قبل وسم الإغلاق <body/> :

<body>
    <div id="price"> your div </div>

  
    <script src="test.js"></script>
</body>

و هذا هو المكان المُفضل لتضمين ملفات الجافاسكربت.

لديك خطأ مطبعي آخر في هذا السطر:

<link rel="staylsheet" href=file.css" type="text/css">

الصح:

<link rel="stylesheet" href="file.css" type="text/css">

بالتوفيق.

  • 0
نشر
بتاريخ 22 دقائق مضت قال Artube Dev:
بتاريخ 15 دقائق مضت قال عبود سمير:

مرحباً،

سبب الخطأ هو أن أكواد الجافاسكربت حالياً يتم تنفيذها قبل أن تتحمل عناصر الصفحة و بالتالي عند البحث عن العُنصر ذو المُعرف price لم يكن موجود بعد على الصفحة و بالتالي فإن: 



document.getElementById("price")

تعود ب null و لا يُمكن تطبيق الخاصية innerHTML على null 

لحل المُشكل هناك عدة الطرق من بينها أن نُخبر javascript أن تنتظر حتى تتحمل الصفحة و ذلك عن طريق الكود التالي:



document.addEventListener("DOMContentLoaded", function(event) { 
  // هنا نضع الأكواد
});

أي بهذا الشكل:



document.addEventListener("DOMContentLoaded", function(event) { 
    //do work

    var myPrice = 1000; 

    myNewprice = 900,
    
    myDiscont = myPrice - myNewprice + 500; //1000 - 900 + 500 = 600
       
    


    document.getElementById("price").innerHTML = myPrice;

});

و بهذا الشكل لن يتم تنفيذ شيفرات الجافاسكربت إلا بعد تحميل كافة عناصر الصفحة.

الطريقة الثانية بنقل وسم الscript إلى قبل وسم الإغلاق <body/> :



<body>
    <div id="price"> your div </div>

  
    <script src="test.js"></script>
</body>

و هذا هو المكان المُفضل لتضمين ملفات الجافاسكربت.

لديك خطأ مطبعي آخر في هذا السطر:



<link rel="staylsheet" href=file.css" type="text/css">

الصح:



<link rel="stylesheet" href="file.css" type="text/css">

بالتوفيق.

مرحبا اخي العزيز لقد قمت بالطريقتين ولاكن تكرر نفس الامر وجودError 

 

  • 0
نشر
بتاريخ 2 دقائق مضت قال عبود سمير:

هذه ملفات تطبيقك يُمكنك تجربتها: th.zip قم بتجربتها يبدو أنك لا تحفظ التغييرات التي تُجريها على الملفات.

 

بتاريخ 2 دقائق مضت قال عبود سمير:

هذه ملفات تطبيقك يُمكنك تجربتها: th.zip قم بتجربتها يبدو أنك لا تحفظ التغييرات التي تُجريها على الملفات.

الملفات محفوظة عندي في فولدر  والبرنامج يعمل حفظ تلقائي للتغيرات 

اعتقد المشكلة في المتصفح

  • 0
نشر
بتاريخ 1 دقيقة مضت قال Artube Dev:

الملفات محفوظة عندي في فولدر  والبرنامج يعمل حفظ تلقائي للتغيرات 

اعتقد المشكلة في المتصفح

هل قمت بتحميل الملفات التي أرسلتها لك و جربتها؟ يُمكن أنك أخطأت في شيء ما فهي تعمل عندي و يتم عرض السعر 1000 في الصفحة بشكل عادي

  • 0
نشر
بتاريخ منذ ساعة مضت قال Artube Dev:

مرحبا يا اساتذة كيف الحال ...

  1. لدي مشكلة تواجهني في الجافا سكربت 
  • document.getElementById("price").innerHTML = لا تعمل و الconsol بيطلع error
  • ياريت في احد يساعدني بالموضوع اكون ممنون

 

IMG_20210104_230514.jpg

IMG_٢٠٢١٠١٠٤_٢٣٠٦٢٦.jpg

الخلل تكرر معي في ملفات الcss ايضا 

ممكن الخلل في المتصفح او في المحرر vscode

بتاريخ 1 دقيقة مضت قال عبود سمير:

هل قمت بتحميل الملفات التي أرسلتها لك و جربتها؟ يُمكن أنك أخطأت في شيء ما فهي تعمل عندي و يتم عرض السعر 1000 في الصفحة بشكل عادي

نعم حملتها ولم تشتغل

  • 0
نشر

و عليكم السلام و رحمة الله و بركاته

مبدئيا أنقل <script> من الheader لأسفل حتى يتمكن المتصفح من تحميل الHTML أولا. ثم أنك لم تضف أصلا عنصرا يحمل id = "price  و بالتالي فإن الخطأمنطقي.

آلية عمل جافا سكريبت مع DOM مختلفة تماما عن آلية عمل اللغة نفسها لذا أفضل طريقة لتضمين ملفات جافا سكريبت في الصفحات هو بإضافتها لأسفل الصفحة قبل إغلاق </body>

 

  • 0
نشر
بتاريخ 11 ساعة قال زياد علي احمد الحربي:

وانا كمان غيرت المحرر وحصلت برضوerror

ربما المشكلة لديك أنك لم تقم بربط ملف جافاسكريبت في HTML بشكل صحيح تأكد من ذلك ومن كتابة اسم الملف والمسار بشكل صحيح.

وأيضًا ربما هناك خطأ في اسم الكلاس أو الـ id وإليك مثال يعمل بشكل سليم، وقد كتبت لك السكريبت داخل كود HTML تجنبًا للمشاكل قم بتجربته.

<!DOCTYPE html>
<html>
<head>
    <title>مثال عن استخدام innerHTML</title>
</head>
<body>
    <h1 id="example-heading">مرحبًا بك!</h1>
    <div id="example-content">
        <p>هذا هو المحتوى الأصلي.</p>
    </div>

    <script type="text/javascript">
        // استهدف عنصر العنوان
        const heading = document.getElementById('example-heading');

        // تحديث المحتوى باستخدام innerHTML
        heading.innerHTML = 'مرحبًا بكم في مثال innerHTML!';

        // استهدف عنصر المحتوى
        const content = document.getElementById('example-content');

        // تحديث المحتوى الداخلي للعنصر بواسطة innerHTML
        content.innerHTML = `<p>هذا هو المحتوى المحدث باستخدام <strong>innerHTML</strong> و <strong>ES6</strong>!</p>`;
    </script>
</body>
</html>

وهناك نقاش آخر لنفس المشكلة أنصحك بالإطلاع عليه:

 

  • -1
نشر

السلام عليكم ورحمة الله وبركاته 

أخي الكريم إن الجافاسكربت هي لغة ممتعة بحق وبسيطة للغاية وعلى قدر مخاطبتها بالعقل والمنطق تجد الأجوبه سهلة بسيطه 

بعض الإخوة ذكر لك أن الخطأ هو في إيراد عنصر حاوي في ملف الhtml وهو

<div id="price"></div>

وهذا صحيح تماماً وأتفق معهم ولكن هناك مشكلة أخرى مهمة للغاية وبسيطة للغاية في كود الجافاسكربت وهو أنك أضفت ; بعد أن قمت بتعريف المتغير الأول وهو myPrice وكان من الواجب أن تضع , فقط حتى تتمكن اللغة من قراءة بقية المتغيرات وهذا هو الحل ببساطة

الخطأ

var myPrice = 1000;
	myNewprice = 900,
    myDiscont = myPrice - myNewprice + 500;

الصواب

var myPrice = 1000,
	myNewprice = 900,
    myDiscont = myPrice - myNewprice + 500;

هذا كل ما في الأمر أن تضيف , بعد 1000 

وإن بقي لديك أي استشكال آخر فاسألني وسأجيب عنك إن شاء الله

انضم إلى النقاش

يمكنك أن تنشر الآن وتسجل لاحقًا. إذا كان لديك حساب، فسجل الدخول الآن لتنشر باسم حسابك.

زائر
أجب على هذا السؤال...

×   لقد أضفت محتوى بخط أو تنسيق مختلف.   Restore formatting

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   جرى استعادة المحتوى السابق..   امسح المحرر

×   You cannot paste images directly. Upload or insert images from URL.

  • إعلانات

  • تابعنا على



×
×
  • أضف...