javascript - 内联箭头函数点击监听器
问题描述
这是我的html代码:
<button id ="btn-birthdate" class = "mdc-icon-button material-icons" >
<i class="material-icons" >stop</i>
</button>
这是我的 JavaScript 代码
const displayExtraUserInfo = (userInfo) => {
const btn = () => {
document.querySelector('btn-birthdate').onclick = displayBirthdate(UserInfo);
}
}
但我不断收到消息
您尚未为指定
onclick
的创建侦听器btn-birthdate
...当我在萨皮奥跑步时
我试图解决的问题
创建
displayExtraUserInfo
箭头函数。它应该接受一个参数。那么它应该:将内联箭头函数单击侦听器添加到 id 为 的 BUTTON
btn-birthdate
。监听器应该调用displayBirthdate
并传入displayExtraUserInfo
接收到的参数
解决方案
在onclick
您当前正在立即执行 displayBirthdate
的分配中,而不是分配功能。
所以改变
.onclick = displayBirthdate(UserInfo)
至:
.onclick = () => displayBirthdate(UserInfo)
另一方面,您永远不会btn
在定义函数后调用它。要么添加一个调用btn()
,要么根本不定义该函数,只在内联执行它的代码。
选择器也有问题。您正在选择标签名称为 的元素btn-birthdate
,但您应该按 id 选择。#btn-birthdate
.
还有另一个错误: 的拼写userInfo
应该是一致的,否则你正在处理另一个变量。
所以最终的解决方案是:
const displayExtraUserInfo = (userInfo) => {
document.querySelector('#btn-birthdate').onclick = () => displayBirthdate(userInfo);
}
最后,问题说您正在寻找一个按钮。虽然元素 id 应该是唯一的,但您可以button
在选择器中添加:
const displayExtraUserInfo = (userInfo) => {
document.querySelector('button#btn-birthdate').onclick = () => displayBirthdate(userInfo);
}