簡體   English   中英

如何將onclick事件添加到元素數組

[英]How to add onclick event to the array of elements

for (let menuname of this.tabsdata[reqmenuitem]) {
   content.push(<Anchor className="toblack" onclick={this._fetchTabData(this)}>{menuname.name}</Anchor>);
}                                                                              

在此_fetchTabData在頁面呈現后_fetchTabData觸發,請指導我如何將onclick偵聽器正確附加到相應的數組元素

在你的情況你調用函數_fetchTabData (和結果傳遞給onClick我想你函數返回undefined這么onClick你傳遞undefined ),但onClick你應該通過引用功能,你可以用做arrow function.bind

for (let menuname of this.tabsdata[reqmenuitem]) {
  content.push(
    <Anchor 
      className="toblack" 
      onClick={() => { this._fetchTabData(menuname) } }
    >
     {menuname.name}
    </Anchor>
  );
}

首先,將_fetchTabData實現更改為如下所示:

_fetchTabData(menuname) {
  return (event) => {
    // Do what you need
    console.log(menuname);
  };
},

然后,這樣稱呼它

for (let menuname of this.tabsdata[reqmenuitem]) {
  content.push(<Anchor className="toblack" onclick={this._fetchTabData(menuname)}>{menuname.name}</Anchor>);
} 
  • .getElementById('container').children ----使用parent的.children屬性將元素放入數組中。
  • 使用附加了.addEventListener(type,function)for()循環遍歷數組
  • 定義具有所需動作的函數(click.changecolor)

//純JS

<!DOCTYPE html>
<html>
<head>
<script>
click = {
    changecolor: (e)=>{
        e.target.style.color = "red";

    }   
};
init = ()=>{
    var childs = document.getElementById('container').children;
    for(var i=0; i < childs.length; i++){
        childs[i].addEventListener('click', click.changecolor);
    }
}
document.addEventListener('DOMContentLoaded', init);
</script>
</head>
<body>
    <div id="container">
        <span>1</span>
        <span>2</span>
        <span>3</span>
        <span>4</span>
    </div>
</body>
</html>

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM