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

السؤال

نشر

لما اضغط علي ال+ الاولي بيخفي لي المحتوي الاول الخاص ب  Haw are you?
وعندما اضغط علي ال+ الثانيه بيخفي لي المحتوي الاول وليس الثاني
وانا اريد ال+ الثانيه تخفي المحتوي الثاني الخاص ب Haw old are you?
https://codepen.io/zzzzz99990/pen/bGvaWmg
 

Screenshot 2022-07-31 132527.png

Recommended Posts

  • 0
نشر (معدل)

مرحبا .

الخطا فى هذا الجزء من الكود 

const allplus =document.querySelectorAll(".plus")
  // 
allplus.forEach(item => {
item.addEventListener("click", (eo) => {

const content=document.getElementsByClassName("content")[0] // الخطا هنا حيث يقوم دائما باخذ العنصر الاول من ال array

  content.classList.toggle("mm")
})


});

 ولحل المشكلة نريد كل عنصر ان ياخد ال class الخاص بالابن له ويمكننا تنفيذه كالتالى .

const allplus =document.querySelectorAll(".plus")
  // 
allplus.forEach((item,index) => {
item.addEventListener("click", (eo) => {

const content=document.getElementsByClassName("content")[index] // هنا قمنا باستخدام متغير لمكان العنصر وبذلك كل عنصر يستخدم الchild الخاص به

  content.classList.toggle("mm")
})


});

 

تم التعديل في بواسطة محمد عاطف11
  • 0
نشر

يحدث هذا لأنك تقومين بإظهار العنصر الأول عند استهداف اي حدث ضغط يخص عناصر + في:

const content = document.getElementsByClassName("content")[0];

سيعني هذا اختفاء واظهار العنصر الاول عند الضغط على علامة + الاولى والثانية بذات الوقت.

لتجاوز هاته المشكلة، سنحتاج تمييز اشارة ال + الاولى عن الثانية، لنقم بتعريف فهرس المكون المستهدف في عنصر الاشارة + الذي نريده. ثم سيسهل تحديده عن طريق الجافاسكربت عند الضغط عليه وبالتالي اظهار او اخفاء العنصر المراد.

لنقم باضافة الخاصيتين data-target-index في كل من عنصري plus كـ:

  • العنصر الاول
<span class="plus" data-target-index="0">+</span>
  • العنصر الثاني
<span class="plus" data-target-index="1">+</span>

ثم عن طريق الجافاسكربت نقوم اولا بالتقاط القيمة المخزنة في data-target-index الخاصة بالعنصر المضغوط عليه:

allplus.forEach(item => {
     item.addEventListener("click", (eo) => {
          var target = item.dataset.targetIndex;

وأخيرا استعمال الفهرس المحصل عليه في تحديد العنصر المستهدف واظهاره او اخفاءه:

var content = document.getElementsByClassName("content")[target];

content.classList.toggle("mm")

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

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

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

×   لقد أضفت محتوى بخط أو تنسيق مختلف.   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.

  • إعلانات

  • تابعنا على



×
×
  • أضف...