首页 > 解决方案 > 变量在 else 语句中未定义

问题描述

我对为什么我的代码中出现“未定义”错误感到困惑。我正在尝试使用“id”变量从数组中删除一个 id,但它会因“未定义”而出错。我尝试了各种移动“var id;”的选项 但我仍然得到错误。我已经在代码中标记了发生错误的位置,如果有人可以帮助我纠正这个错误,我将不胜感激。非常感谢

$(function() {
  info = [];
  $(document).on('click', '.rowChk', function() {
    var id;
    if (this.checked) {
      $('#rowClk').show();
      var currentRows = $(this).closest("tr");
      var rackid = currentRows.find("td:eq(0)").text();
      //    var rackidnumber = currentRows.find("td:eq(1)").html();
      var rackservice = currentRows.find("td:eq(2)").html();
      var rackactivity = currentRows.find("td:eq(3)").html();
      var rackdept = currentRows.find("td:eq(4)").html();
      var rackcompany = currentRows.find("td:eq(5)").html();
      var rackaddress = currentRows.find("td:eq(6)").html();
      var rackuser = currentRows.find("td:eq(7)").html();
      var rackitem = currentRows.find("td:eq(8)").html();
      var rackddate = currentRows.find("td:eq(9)").html();
      var rackdate = currentRows.find("td:eq(10)").html();

      id = rackid;

      data = {};
      data.rackids = id;
      //    data.idnumber = rackidnumber;
      data.service = rackservice;
      data.activity = rackactivity;
      data.dept = rackdept;
      data.company = rackcompany;
      data.address = rackaddress;
      data.user = rackuser;
      data.item = rackitem;
      data.intakedate = rackdate;
      data.destroydate = rackddate;
      info.push(data);
    } else {
      console.log(id); <--- Showing as undefined
      var index = info.findIndex(function(item) {
        return item.id === id;
      });
      if (index !== -1) {
        info.splice(index, 1);
        if (info.length === 0) {
          $('#rowClk').css('display', 'none');
        }
      }
    }
  });
});

标签: javascriptjquery

解决方案


您的变量id尚未在else通量中定义。为了帮助你理解,elseflux相当于:

$(function() {
   info = [];
   $(document).on('click', '.rowChk', function() {
     var id;
     if (this.checked) {

     } else {
       console.log(id); <--- Showing as undefined
       var index = info.findIndex(function(item) {
           return item.id === id;
       });
       if (index !== -1) {
          info.splice(index, 1);
          if (info.length === 0) {
             $('#rowClk').css('display', 'none');
          }
       }
     }
    });
  });

推荐阅读