我尝试使用如下所示的jQuery动态创建表
$.each(data, function (index, item) {
rows = rows + '<tr>' + '<td style="width:20px" style="text-align: center;"><input type="radio" userid=' + item.UserId + ' checked="checked" name="SummaryTemplateRadio" id="savedSummaryTemplate' + item.SummaryTemplateSavedId + '"></td>' +
'<td class="tcol1" id="summaryTemplateName' + item.SummaryTemplateSavedId + '" style="text-align: left;">' + item.TemplateName + '</td>' +
'<td class="tcol2" style="text-align: left;">' + item.CreationDate + '</td>' +
'<td class="tcol3" id="summaryTemplateDesc' + item.SummaryTemplateSavedId + '" style="text-align: left;">' + item.TemplateDescription + '</td>' +
'<td class="tcol4" style="text-align: left;">' + item.UserId + '</td>' +
'<td class="tcol5" style="text-align: left;">' + item.NoOfMeasures + '</td>' +
'</tr>';
});
$('.loadTemplatepopup .allTemplateTable tbody').html(rows);
问题是当它在IE9中运行时,&#39;未定义&#39;打印在下表中
undefined是因为,在jquery中,每个循环索引变量都是未定义的? IE10和其他浏览器工作正常。我该如何解决这个问题?
答案 0 :(得分:2)
我将在这里猜测:问题不是index
,而是rows
。
您的代码可能是:
var rows;
$.each(/**/)
将其更改为:
var rows = "";
$.each(/**/)
或类似的东西:
rows = (rows || "") + '<tr>..etc..</tr>';
答案 1 :(得分:1)
只需将行放入
即可if (data.hasOwnProperty(index)) {
}
它将解决跨浏览器的问题。享受。
答案 2 :(得分:1)
The issue is a very tricky one , Here it goes
when you use "**$(array).each**" jquery clause in **IE** along with the iterator object array, it also returns the **prototype** of the array as an element ....which when tries to run the function nested in it,,,,,it breaks!
The solution would be to add a null check for the individual items in the iterator function.
$(myObjectArray).each(function (key, value) {
if(typeof value !="undefined")
someOtherCode(value.webName, value.webPath, value.libraryName);
});