我有一个创建表的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;
}
在每个函数的内部,我创建了2个变量: var data1 = this.RealValue.FieldValue; var data2 = this.RealValue.Id;
我尝试在内部各创建一个变量:
if (data1 === item) //Here data1 is undefined!!!
但是在这一行上,我得到这个错误:
Uncaught ReferenceError: data1 is not defined
知道为什么data1未定义吗?
答案 0 :(得分:3)
只能是undefined
是因为this.RealValue.FieldValue
或this.RealValue
是undefined
答案 1 :(得分:1)
看起来像
var data1 = this.RealValue.FieldValue; //it's value is undefined
this.FieldValue //it's value is undefined
尝试
console.log(this.FieldValue)
console.log(data1)
此后,您可以轻松找到错误原因以及原因。否则,您的代码看起来一切正常。
答案 2 :(得分:0)
我以前遇到过类似的问题。我花了几个小时才发现问题。现在除了这里还有一些不清楚的地方。
该值是否来自另一个函数的操作?如果
this.RealValue.FieldValue;
来自例如可能是另一个函数的结果,那么在继续执行下一行代码之前,您需要使用async / await来确保该函数完成其操作并且 this.RealValue.FieldValue 中包含数据
也许 this.RealValue.FieldValue 本身在函数本身之外没有分配任何东西。
为了帮助您,我们需要完整的代码。如果您认为自己的代码过于私密,则可以尝试使用@Negi Rox之前所说的内容。
在代码中的各个关键位置放置console.log(this.RealValue.FieldValue),以确定何时为其分配值。