qwe2052190 发表于 2022-1-21 15:14:09

大佬鼠们救救孩子吧,这个JS总是报错

大佬鼠们帮忙康康一下代码,运行起来貌似没什么问题,部署功能看似都能实现,但是在控制台总是报错,查了下说好像要用箭头函数来代替,试了下也不管用,麻了啊,以下是js代码,最后面我会把报错提示附上

<script>
    // 正则表达式限定输入内容
    var nameRex = /(^{1}{1,7}$)|(^[\u4e00-\u9fa5]+(·[\u4e00-\u9fa5]+)*$)/
    var emailRex = /^+@+(\.+)+$/
    salaryRex = /^\d+\d$/

    // 判断输入是否合法的函数
    function inFoTest(testT,text) {
      return testT.test(text);
    };
   

    // 绑定提交按钮点击事件
    var btn = document.querySelector('button');
    btn.addEventListener('click',function() {
      var box2 = document.querySelector('.box2');
      var lis = box2.querySelectorAll('ul li input');
      var nameText = lis.value;
      var infoName = lis.name;
      var infoEmname = lis.name;
      var emailText = lis.value;
      var salaryText = lis.value;
      var infoSal = lis.name;
      var table = document.querySelector('table');
      var tr = document.createElement('tr');
      // 创建一个数组存储合法的信息
      var list = [];
      if(!nameText) {
            alert('您输入的姓名为空,请重新输入!');
      }else{
            if(inFoTest(nameRex,nameText)) {
                if(!emailText) {
                  alert('您输入的邮箱为空,请重新输入!');
                }else{
                  if(inFoTest(emailRex,emailText)) {
                        if(!salaryText) {
                            alert('您输入的奖金为空,请重新输入!');
                        }else{
                            if(inFoTest(salaryRex,salaryText)) {
                              list.push(nameText);
                              list.push(emailText);
                              list.push(salaryText);
                              for(var i=0;i<list.length+1;i++) {
                                    if(i<list.length) {
                                        tr.innerHTML += '<td>'+list+'</td>';
                                    }else{
                                        tr.innerHTML += '<td><a href="javascript:;" ">Delete</a></td>';
                                    }

                              };
                              table.appendChild(tr);
                              
                            }else{
                              alert('您输入的奖金有误,请重新输入!');
                            }
                        }
                  }else{
                        alert('您输入的邮箱有误,请重新输入!');
                  }
                }
            }else{
                alert('您输入的姓名有误,请重新输入!');
            }
      };

      
      var aDs = tr.getElementsByTagName('a');
      var Dels = document.getElementsByTagName('a');
      for(var i=0;i<Dels.length;i++) {
            aDs.addEventListener('click',function() {
                var table = document.querySelector('table');
                var name = this.parentElement.parentElement.firstElementChild.innerHTML;
                // alert(name)
                if(confirm('是否确认删除'+name+'的信息?')) {
                  table.removeChild(this.parentElement.parentElement);
                };
            })
      };
    });

   
   
    // 为Delete绑定点击事件
    var Dels = document.getElementsByTagName('a');
    for(var i=0;i<Dels.length;i++) {
      Dels.addEventListener('click',function() {
            var table = document.querySelector('table');
            var name = this.parentElement.parentElement.firstElementChild.innerHTML;
            // alert(name)
            if(confirm('是否确认删除'+name+'的信息?')) {
                table.childNodes.removeChild(this.parentElement.parentElement);
               
            }
      })
    }
</script>


附:
      
       Uncaught TypeError: Cannot read properties of undefined (reading 'addEventListener')
    at HTMLButtonElement.<anonymous> (model002.html:199:20)
(匿名) @ model002.html:199

麻烦大佬鼠们啦,拜上!

翼是孤独 发表于 2022-1-21 15:47:45

是不是浏览器版本问题,IE8和IE8以前版本不支持addEventListener,要换成attachEvent()

qwe2052190 发表于 2022-1-21 16:19:42

翼是孤独 发表于 2022-1-21 15:47
是不是浏览器版本问题,IE8和IE8以前版本不支持addEventListener,要换成attachEvent()

啊,可是用QQ浏览器和edge也是这个鬼样子{:5_107:}

qwe2052190 发表于 2022-1-22 16:20:49

{:10_254:}终于解决了,事件委托干就完了{:5_109:}{:5_109:}{:5_109:}
页: [1]
查看完整版本: 大佬鼠们救救孩子吧,这个JS总是报错