Javascript 如何将onclick事件添加到元素数组中 for(让menuname这个.tabsdata[reqmenuitem]){ push({menuname.name}); }
在这里,Javascript 如何将onclick事件添加到元素数组中 for(让menuname这个.tabsdata[reqmenuitem]){ push({menuname.name}); },javascript,arrays,reactjs,Javascript,Arrays,Reactjs,在这里,\u fetchTabData在页面呈现后立即触发,请指导我如何将onclick侦听器正确附加到相应的数组元素中,如果您正在调用函数\u fetchTabData(并将结果传递到onClick我假设您的函数返回undefined,因此传递到onClick您将传递undefined),但对于onClick您应该传递对函数的引用,您可以使用或绑定 for (let menuname of this.tabsdata[reqmenuitem]) { content.push(<An
\u fetchTabData
在页面呈现后立即触发,请指导我如何将onclick
侦听器正确附加到相应的数组元素中,如果您正在调用函数\u fetchTabData
(并将结果传递到onClick
我假设您的函数返回undefined
,因此传递到onClick
您将传递undefined
),但对于onClick
您应该传递对函数的引用,您可以使用或绑定
for (let menuname of this.tabsdata[reqmenuitem]) {
content.push(<Anchor className="toblack" onclick={this._fetchTabData(this)}>{menuname.name}</Anchor>);
}
for(让menuname这个.tabsdata[reqmenuitem]){
内容推送(
{this._fetchTabData(menuname)}
>
{menuname.name}
);
}
首先,将\u fetchTabData
实现更改为如下内容:
for (let menuname of this.tabsdata[reqmenuitem]) {
content.push(
<Anchor
className="toblack"
onClick={() => { this._fetchTabData(menuname) } }
>
{menuname.name}
</Anchor>
);
}
那么,就这样称呼它吧
_fetchTabData(menuname) {
return (event) => {
// Do what you need
console.log(menuname);
};
},
for(让menuname这个.tabsdata[reqmenuitem]){
push({menuname.name});
}
.getElementById('container').children
----使用父级的.children属性将元素获取到数组中
- 使用
for()
循环附加.addEventListener(类型、函数)
- 使用所需操作定义函数(单击.changecolor)
//纯JS
for (let menuname of this.tabsdata[reqmenuitem]) {
content.push(<Anchor className="toblack" onclick={this._fetchTabData(menuname)}>{menuname.name}</Anchor>);
}
单击={
更改颜色:(e)=>{
e、 target.style.color=“红色”;
}
};
初始化=()=>{
var childs=document.getElementById('container').childs;
对于(变量i=0;i
这是因为您正在调用this.\u获取tabdata
并将返回值传递给onclick
()
始终调用该函数。可能值得快速解释一下thunk和closure,因为这一点不太清楚,而且在ToolKit中有一个很好的模式,为什么会得到否决票?这正好向您展示了“如何将onclick事件添加到元素数组中”
正如标题所述……在新的ES6速记“胖箭头语法”中……对于投票否决这一点的rook来说可能有点高级。
<!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>