مساعدة في كود javascript

السلام عليكم

أحتاج مساعدة

عندما أحاول تكرار الكود

buttonarr[i].onclick = myFunction(i);

يتم تنفيذ الدالة

myFunction(i);

رغم عدم حدوث الحدث onclick

جربت حلقة التكرار for

for (var i = 0; i < 10; i++) {
    buttonarr[i].onclick = myFunction(i);
}

جربت حلقة التكرار while

var i = 0;
while (i < 10) {
    buttonarr[i].onclick = myFunction(i);
}

هذا كود كامل تجريبي

<html>
<head></head>
<body>
      <button class="btt">0</button>
      <button class="btt">1</button>
      <button class="btt">2</button>
      <button class="btt">3</button>
      <button class="btt">4</button>
      <p id="p"></p>
      <script>
          var btt = document.getElementsByClassName("btt"),
                 p = document.getElementById("p"),
                 i;
          function myFunction(k) {
                 p.innerText = p.innerText + k;
          }
          for (i = 0; i< btt.length; i += 1) {
                 btt[i].onclick = myFunction(i);
          }
        </script>
  </body>
  </html>

وشكرا ..

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

التعليقات

mo7@mmed أضف ردا

مرحباً

لديك خطأ في أو سطرين من السكريبت

استبدل الفاصلة بالفاصلة (,) بالفاصلة المنقوطة (;)

لا أخي الخطأ ليس في ذلك فيمكن تعريف المتغيرات بطريقتين

var i = 0;
var j = 1;

var k = 2;

أو

var i = 0,
      j = 1,
      k = 2;

نعم اسف على ذلك أنا مبتدئ واتعلمها من اسبوع واتذكر أني رأيت هذه الطريقة ولكن يبدو أنني نسيتها ^__^

شكرا لك الأن تذكرتها

المهم أنا لم افهم ما الذي تحاول فعله هل من الممكن أن تشرح لي ؟

أريد تكرار

btt[i].onclick = myFunction(i);

وعدم تنفيذ الدالة

myFunction(i);

إلا بعد النقر على الزر

btt[i]

نعم أنا اقصد الفكرة التي تحاول تنفيذها

هل هي طباعة قيمة الزر الذي تقوم بالضغط عليه مثلاً

أم ماهي بالظبط

السلام عليكم

جرب هذا

btt[i].onclick = function(){myFunction(i)}

النتيجة

عند الضغط على أي زر يتم فقط طباعة الرقم 5

هل وضحت اكثر من فضلك

أريد كتابة

btt[0].onclick = myFunction(0);
btt[1].onclick = myFunction(1);

btt[2].onclick = myFunction(2);

btt[3].onclick = myFunction(3);

btt[4].onclick = myFunction(4);
Hossam Elbadawy أضف ردا
      var b = document.getElementsByClassName("btt"),
          p = document.getElementById("p");

      function myFunction(k) {
             p.innerText = p.innerText + k;
      }

     for (var i = 0; i < b.length; i++) {
        b[i].setAttribute("a",i);
        b[i].onclick = function(){
             myFunction(this.getAttribute("a"));
        }
     }

شكرا جزيلا لقد حل المشكل

لاكن مامعنى الأتربيوت a في html

Hossam Elbadawy أضف ردا

ليس سوى مكان لتخزين فقط حتى استدعى القيمة الخاصة به عند حدوث حدث النقر

ليس بالضرورة اناكتب a ، يمكن كتابة data-text مثلا لكن انا احب القيمة التسلسلية a,b,c,..

mahdix18 أضف ردا

سلام عليكم

ليس هناك دالة تدعى onclick في جافاسكريبت يمكن إستخدام دالة addEventListener

btt[i].addEventListener("click", myFunction())

ونسج على المنوال

zakariamouhid أضف ردا

هذا

btt[i].addEventListener("click", myFunction(i))

مثل

btt[i].onclick = myFunction(i);

و onclick ليس دالة بل حدث النقر

يمكنك استعمال هذا الكود

      var btt = document.getElementsByClassName("btt"),
             p = document.getElementById("p"),
             i;

      for(i = 0; i< btt.length; i += 1){
             btt[i].addEventListener('click',function(){
                 return p.textContent = this.textContent
             })
      }

الحل بطريقة أخرى

var i = 0;
while (i < 5) {
    btt[i].setAttribute("onclick", "myFunction(" + i + ")");
    i += 1;
}

ماذا تفعل هنا ههههههههه

كنت أجرب بعض الأكواد فتذكرت هذا المشكل

وخطر ببالي أن هذا الحل ممكن أيضا