搜尋

首頁  >  問答  >  主體

javascript - addEventListener怎麼動態傳入帶參數函式?

有個未採納的「瀟瀟雨歇」的答案,也有用,只是我現在還不知道let的具體用法。在此表示歉意,我也好想採納兩個。

#結果肯定是
click button1 alert(3)
click button2 alert(3)

怎麼修改程式碼使得
click button1 alert(1)
click button2 alert(2)

感覺這個問題跟settimeout的閉包經典問題有點像,但是我又想不到什麼解決辦法。

求指點。

phpcn_u1582phpcn_u15822755 天前830

全部回覆(5)我來回復

  • phpcn_u1582

    phpcn_u15822017-05-18 10:52:01

    function myclick(i){
        return function(){
             alert(i)
        }

    第二個參數傳myclick(i)

    回覆
    0
  • PHPz

    PHPz2017-05-18 10:52:01

    把參數保存在每個button元素的屬性裡。
    或用let

    回覆
    0
  • 我想大声告诉你

    我想大声告诉你2017-05-18 10:52:01

    點選按鈕後,取得button的屬性data-info中的屬性

    回覆
    0
  • 曾经蜡笔没有小新

    曾经蜡笔没有小新2017-05-18 10:52:01

    jquery一般來說就是操作DOM,渲染的時候拼接在dom上一般是data-*的格式,然後取得出來再用$(this).attr(key)

    回覆
    0
  • 过去多啦不再A梦

    过去多啦不再A梦2017-05-18 10:52:01

    將var 改為 let 即可

     window.onload = function () {
          for (let i = 1; i < 3; i++) {
            document.getElementById('myButton' + i)
              .addEventListener('click', () => {
                myClick(i)
              })
          }
        }

    回覆
    0
  • 取消回覆