JavaScript如何获取触发change事件的input元素及其name属性
问题排查与修正方案
- 你提到的
p1 is not defined错误在你贴出的这段代码中不存在,说明你本地运行的代码和你贴的版本不一致,大概率是你之前写处理函数的时候把参数写成了p1,后续改参数名的时候没改全,或者其他位置引用了未声明的p1变量,直接排查本地代码里的p1相关引用就能解决这个报错。 - 你对事件回调的传参逻辑理解有误:通过
addEventListener绑定的事件处理函数,触发时只会自动传入唯一一个参数,就是事件对象event,不会自动传入第二个name参数,你之前以为会有p1、p2两个参数传入的认知是错的。
你现在用的事件委托思路是完全可行的,要拿到触发事件的input的name属性,直接从event.target上读取name属性即可,额外加一层标签判断可以避免表单内其他元素触发事件时逻辑出错,修改后的JS代码如下:
function field_check(event) { // 仅处理input元素触发的事件 if(event.target.tagName.toLowerCase() === 'input') { const inputName = event.target.name; alert("触发事件的input的name值为:" + inputName); } } document.getElementById("add_data").addEventListener("change", field_check);
内容的提问来源于stack exchange,提问作者John
相关产品推荐
相关产品推荐

