在else语句中未定义变量

时间:2019-09-27 08:07:05

标签: javascript jquery

对于为什么我的代码中出现“未定义”错误,我感到困惑。我正在尝试使用'id'变量从数组中删除ID,但会出现'undefined'错误。我尝试了多种移动“ 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');
        }
      }
    }
  });
});

2 个答案:

答案 0 :(得分:1)

该值是不确定的,因为当代码到达else语句时,您永远不会为其分配值。

您声明var id;,然后打开if语句,在其中分配值,而在else中,它只是未定义的。

您需要在if else语句之前进行此操作id = rackid;

答案 1 :(得分:1)

您的变量catch{ Write-Line(Exception e.Message) } 尚未在<?php class Filter { public static function filterNumbersFromArray(&$arr) { $i = 0; while($i < count($arr)){ if(is_integer($arr[$i]) === false){ unset($arr[$i]); } $i++; } } } $arr = [1, 'a', 'b', 2 , 'bb']; Filter::filterNumbersFromArray($arr); print_r(array_values($arr)); 通量中定义。为了帮助您理解,else通量等效于:

id