2017-06-05 154 views
-1

保存在借条,如果我警惕的销售发票金额alert("sales" + si);然后它说: -TR TD jQuery的每个先前的TD值不变量

不确定

这是为什么?

为什么它不能在si保存价值?

任何帮助?

我的代码

$('input[type=button]').click(function() { 

    var trid = $(this).closest('tr').attr('id'); // table row ID 
    var grossProfit = 0; 

    $("tr#"+trid).each(function(i) { // row. 

     $("td", this).each(function(j) { // col. 
      console.log("".concat("row: ", i, ", col: ", j, ", value: ", $(this).text())); 

      //Sales Invoice. 

      if (j == 2) { 
       var si = $(this).find("input").val(); 
       // if sales invoice not found/undefined. 
       if (typeof si === "undefined") { 
        si = 0; // if sales invoice is not defined. 
       } 
       alert("sales" + si); 
      } 
      // Debit Note. 
      if (j == 3) { 
       var dn = $(this).find("input").val(); // Debit note input value. 
       //if debit note not found/undefined. 
       if (typeof dn === "undefined") { 
        dn = 0; // if Debit Note is not defined. 
       } 
       alert("sales" + si); 
      } 
     }); 
    }); 
}); 

单一的HTML行输入字段TR和TD 共享代码的HTML https://codeshare.io/21q4zj

+0

添加html标记以及 – guradio

+0

也请添加HTML –

+0

所有tds的HTML行https://codeshare.io/21q4zj – Peter

回答

1

UPDATE

澄清谁在想它是一个范围问题其不是

JavaScript确实是variable hoisting,并且所有变量定义都在您的函数中处于顶端。

什么是JavaScript它将一个变量初始化为未定义的变量,当它为其分配内存时。

如果变量未定义,则表示该变量未初始化。

在JavaScript中未定义(从未定义)变量会给你引用错误

https://jsfiddle.net/b5cbwufx/3/

解决方案

这里的问题是,你是分配价值si = 0

只有当条件if (j == 2) {符合时才意味着当条件if(j == 3){满足上述条件将东北角失败,因此您的SI永远不会初始化为0

此代码永远不会执行

if (j == 2) { 
    var si = $(this).find("input").val(); 
    // if sales invoice not found/undefined. 
    if (typeof si === "undefined") { 
    si = 0; // if sales invoice is not defined. 
    } 
    alert("sales" + si); 
} 

所以,你越来越代码

// Debit Note. 
if (j == 3) { 
    var dn = $(this).find("input").val(); 

    if (typeof dn === "undefined") { 
    dn = 0; // if Debit Note is not defined. 
    } 
    alert("sales" + si); // not defined as j==3 and not 2 
} 
未定义

尝试在顶部if块之外声明它们

var si=0,dn=0; //declare here 

// // Sales Invoice. 
if (j == 2) { 

    si = $(this).find("input").val(); 
    // if sales invoice not found/undefined. 
    if (typeof si === "undefined") { 
    si = 0; // if sales invoice is not defined. 
    } 
    alert("sales" + si); 

} // scope ends 

// Debit Note. 
if (j == 3) { 
    dn = $(this).find("input").val(); // Debit note input value. 

    if (typeof dn === "undefined") { 
    dn = 0; // if Debit Note is not defined. 
    } 
    alert("sales" + si); 
}