为了账号安全,请及时绑定邮箱和手机立即绑定

脚本 - 将事件侦听器添加到多个元素

脚本 - 将事件侦听器添加到多个元素

浮云间 2022-09-29 17:38:45
我有多个元素使用相同的事件侦听器。与其重复相同的函数三次,哇,我是否将它们组合在一起,为三个元素中的每个元素调用相同的事件?和cardNumbercardExpirycardCvccardNumber.addEventListener('change', function(event) {  var displayError = document.getElementById('card-errors');  if (event.error) {    displayError.textContent = event.error.message;  } else {    displayError.textContent = '';  }});cardExpiry.addEventListener('change', function(event) {  var displayError = document.getElementById('card-errors');  if (event.error) {    displayError.textContent = event.error.message;  } else {    displayError.textContent = '';  }});cardCvc.addEventListener('change', function(event) {  var displayError = document.getElementById('card-errors');  if (event.error) {    displayError.textContent = event.error.message;  } else {    displayError.textContent = '';  }});
查看完整描述

3 回答

?
qq_遁去的一_1

TA贡献1725条经验 获得超8个赞

检查这个


cardCvc.addEventListener('change', foo);


function foo(event) {

  var displayError = document.getElementById('card-errors');

  if (event.error) {

    displayError.textContent = event.error.message;

  } else {

    displayError.textContent = '';

  }

}


查看完整回答
反对 回复 2022-09-29
?
阿波罗的战车

TA贡献1862条经验 获得超6个赞

您可以实现事件委派模式


基本上,它包括将事件分配给元素的容器,然后验证您丢弃的元素的名称或类型,并且从逻辑上讲,只有您感兴趣的元素才会受到影响。要了解更多信息,请访问此出版物


下面是一个示例


const container = document.querySelector("#container");

const displayError = document.getElementById("card-errors");


container.addEventListener("change", (event) => {

  const target = event.target;


  if (target.nodeName !== "INPUT") return;


  displayError.textContent = event.error ? event.error.message : "";

});


查看完整回答
反对 回复 2022-09-29
?
侃侃无极

TA贡献2051条经验 获得超10个赞

只需分离事件处理程序函数,并创建元素的数组,然后最终循环它以附加事件处理程序。


const eventHandler = function(event) {

  var displayError = document.getElementById('card-errors');

  if (event.error) {

    displayError.textContent = event.error.message;

  } else {

    displayError.textContent = '';

  }

}


const items = [cardNumber, cardExpiry, cardCvc];

items.forEach((item) => {

    item.addEventListener('change, eventHandler);

});


查看完整回答
反对 回复 2022-09-29
  • 3 回答
  • 0 关注
  • 145 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号