Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/378.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript tr td jquery之前的每个td值都没有保存在变量中_Javascript_Jquery - Fatal编程技术网

Javascript tr td jquery之前的每个td值都没有保存在变量中

Javascript tr td jquery之前的每个td值都没有保存在变量中,javascript,jquery,Javascript,Jquery,如果我提醒销售发票价值提醒(“销售”+si),则在借方票据中然后它说:- 未定义 为什么呢 为什么不在si中保存值 有什么帮助吗 我的代码 $('input[type=button]' ).click(function() { var trid = $(this).closest('tr').attr('id'); // table row ID var grossProfit = 0; $("tr#"+trid).each(function( i ) { // r

如果我提醒销售发票价值
提醒(“销售”+si),则在借方票据中然后它说:-

未定义

为什么呢

为什么不在
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 );
            }
        });
    });
});
带有输入字段tr和td的单个html行 与html共享代码

更新

澄清谁认为这是一个范围问题不是

JavaScript和所有变量定义都位于函数的顶部

JavaScript做什么?当为变量分配内存时,它将变量初始化为未定义

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

Javascript中未定义(从未定义)的变量将给您引用错误

解决方案

这里的问题是您正在分配值
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);
}

同时添加html标记请将html添加到包含所有tds的html行