代码之家  ›  专栏  ›  技术社区  ›  Michael

为什么在foreach函数中未定义变量?

  •  -3
  • Michael  · 技术社区  · 7 年前

    如果我创建了一个表,我就拥有这个jQuery函数:

    function propertyView(values) {
    
    // build the table
    var frame = '<fieldset id = "propertiesValueArea" style="border: solid 1px #6b6b6b;">';
    var content = frame + smallHeader + '<table data-role="table" id="propertiesList"><thead><tr></tr></thead>';
    
    $.each($(values), function () {
        var data1 = this.RealValue.FieldValue;
        var data2 = this.RealValue.Id;
        //create tables row 
        content += '<tr data-id=' + this.Id + '>';
        content += '<td style="vertical-align: inherit;text-align:center;"><label for="">' + this.FieldName + '</label></td>';
        if (this.FieldValue.indexOf(',') > -1) {
            content += '<td style="text-align:center;"><select>';
            this.FieldValue.split(',').forEach(function (item) {
    
                if (data1 === item) //Here data1 is undefined!!!
                {
                    content += '<option selected="selected" value="">' + item + '</option>';
                }
                else {
                    content += '<option value="">' + item + '</option>';
                }
            })
            content += '</select></td>';
        }
        else {
            content += '<td style="text-align:center;"><input type="text" id="propFieldName" data-id="' + this.Id + '" value="' + congiValue(this.FieldValue, this.RealValue) + '"/>';
        }
        content += '</tr>';
    });
    content += '</table>';
    content += '</fieldset>'
    
    return content;
    }
    

    var数据1=this.RealValue.FieldValue;

    我尝试在每个内部创建这个变量:

     if (data1 === item) //Here data1 is undefined!!!
    

    但在这一行我得到了一个错误:

       Uncaught ReferenceError: data1 is not defined
    

    3 回复  |  直到 7 年前
        1
  •  3
  •   AmerllicA    7 年前

    可能是 undefined this.RealValue.FieldValue this.RealValue 未定义

        2
  •  1
  •   Al Fahad Anjan Kumar GJ    7 年前

    var data1 = this.RealValue.FieldValue; //it's value is undefined
    this.FieldValue  //it's value is undefined
    

    尝试

    console.log(this.FieldValue)
    console.log(data1)
    

    在那之后,你可以很容易地找到你在哪里得到一个错误和为什么。否则你的代码一切看起来都很好。

        3
  •  0
  •   halfer Jatin Pandey    7 年前

    我以前也遇到过类似的问题。我花了几个小时才发现这个问题。现在,在这一边有一些事情是不清楚的。

    1. this.RealValue.FieldValue;
      

      可能是另一个函数的结果,则需要使用async/await来确保函数完成其操作并且 this.RealValue.FieldValue这个值 在你进入下一行代码之前。

    2. this.RealValue.FieldValue这个值 它本身没有在函数本身之外分配给它的任何东西。

    将console.log(this.RealValue.FieldValue)放在代码中不同的战略位置,以确定何时为其分配值。