Mohamed Rahal نشر 14 أكتوبر 2023 أرسل تقرير نشر 14 أكتوبر 2023 (معدل) لدي مشكلة عندما أضغط على button show أريد أن يظهر ليtesting.zip form الخاص به فقط . المشكلة أنه يظهر الاول فقط تم التعديل في 14 أكتوبر 2023 بواسطة Mustafa Suleiman تعديل عنوان السؤال 1 اقتباس
0 Mustafa Suleiman نشر 14 أكتوبر 2023 أرسل تقرير نشر 14 أكتوبر 2023 المشكلة تكمن في أنك تستخدم نفس الهوية (id) "myForm" لجميع العناصر في الحلقة for داخل الدالة AllNames(). أي أن جميع الأزرار "show" تشير إلى نفس العنصر myForm، وبالتالي عليك جعل كل زر "show" يفتح العنصر المرتبط به، من خلال تمرير معرف فريد لكل عنصر، كالتالي: <script> const arrays = [ { id: 123, name: 'yasser', age: 33, job: 'engenner' }, { id: 643, name: 'bakkar', age: 12, job: 'devloper' }, { id: 908, name: 'hamed', age: 21, job: 'backEnd' }, { id: 435, name: 'Umar', age: 32, job: 'fronEnd' }, { id: 254, name: 'saber', age: 15, job: 'master' }, { id: 765, name: 'iman', age: 11, job: 'secrit' }, ]; const AllNames = () => { for (array of arrays) { let content = ` <div class="card"> <h1>name: ${array.name}</h1> <h3>age: ${array.age}</h3> <h3>job: ${array.job}</h3> <div class="myForm" id= myForm-${array.id} style="display:none"> <input type="text" /> <button class="Edit" onclick="handle()">Edit</button> </div> <button class="show" onclick="showForm(${array.id})">show</button> </div>`; document.getElementById('divAll').innerHTML += content; } }; const handle = () => { console.log(this.array); }; const showForm = id => { document.getElementById(`myForm-${id}`).style.display = 'block'; }; AllNames(); </script> 1 اقتباس
0 Mohamed Rahal نشر 14 أكتوبر 2023 الكاتب أرسل تقرير نشر 14 أكتوبر 2023 بتاريخ 13 دقائق مضت قال Mustafa Suleiman: المشكلة تكمن في أنك تستخدم نفس الهوية (id) "myForm" لجميع العناصر في الحلقة for داخل الدالة AllNames(). أي أن جميع الأزرار "show" تشير إلى نفس العنصر myForm، وبالتالي عليك جعل كل زر "show" يفتح العنصر المرتبط به، من خلال تمرير معرف فريد لكل عنصر، كالتالي: <script> const arrays = [ { id: 123, name: 'yasser', age: 33, job: 'engenner' }, { id: 643, name: 'bakkar', age: 12, job: 'devloper' }, { id: 908, name: 'hamed', age: 21, job: 'backEnd' }, { id: 435, name: 'Umar', age: 32, job: 'fronEnd' }, { id: 254, name: 'saber', age: 15, job: 'master' }, { id: 765, name: 'iman', age: 11, job: 'secrit' }, ]; const AllNames = () => { for (array of arrays) { let content = ` <div class="card"> <h1>name: ${array.name}</h1> <h3>age: ${array.age}</h3> <h3>job: ${array.job}</h3> <div class="myForm" id= myForm-${array.id} style="display:none"> <input type="text" /> <button class="Edit" onclick="handle()">Edit</button> </div> <button class="show" onclick="showForm(${array.id})">show</button> </div>`; document.getElementById('divAll').innerHTML += content; } }; const handle = () => { console.log(this.array); }; const showForm = id => { document.getElementById(`myForm-${id}`).style.display = 'block'; }; AllNames(); </script> جزاك الله اقتباس
0 محمد سعد شحرور نشر 4 ديسمبر 2023 أرسل تقرير نشر 4 ديسمبر 2023 عليك أن تمر على عناصر المصفوفة كلها، ومن ثم اضافة عنصر html يحوي محتوى كل عنصر على حدا. يمكنك تطبيق ذلك بواسطة التابع map او forEach المقدمين في EcmaScript 2016، وهي بمثابة تحديث او اضافات للغة JavaScript. تستطيع استخدام التوابع المقدمة من ES6 مباشرة بدون أي خطوات اضافية، وهذا هو الحل لمشكلتك باستخدام التابع map. const arrays = [ { id: 123, name: 'yasser', age: 33, job: 'engenner' }, { id: 643, name: 'bakkar', age: 12, job: 'devloper' }, { id: 908, name: 'hamed', age: 21, job: 'backEnd' }, { id: 435, name: 'Umar', age: 32, job: 'fronEnd' }, { id: 254, name: 'saber', age: 15, job: 'master' }, { id: 765, name: 'iman', age: 11, job: 'secrit' }, ]; let elements = ''; arrays.map(array => { elements += `<div> ${array.id}... </div>` }) هذا هو الحل الأسهل لمشكلة عرض ال id الخاص بكل عنصر بالمصفوفة، حيث array هنا هو كل عنصر على حدا، والسهم هو اختصار لل function بلغة JS. اقتباس
السؤال
Mohamed Rahal
لدي مشكلة عندما أضغط على button show أريد أن يظهر ليtesting.zip form الخاص به فقط . المشكلة أنه يظهر الاول فقط
تم التعديل في بواسطة Mustafa Suleimanتعديل عنوان السؤال
3 أجوبة على هذا السؤال
Recommended Posts
انضم إلى النقاش
يمكنك أن تنشر الآن وتسجل لاحقًا. إذا كان لديك حساب، فسجل الدخول الآن لتنشر باسم حسابك.