通过[]运算符从JS对象访问属性时,我看到了奇怪的行为。
表格中有3列'attr1','attr2','attr3'。我的JS对象有一个名为Attributes的属性,它是一个哈希表,看起来像 {attr1:'val',attr2:'val',attr3:'val'}
以下设计的代码可以正常使用
function onRowDataBound(e) {
var attributes = e.dataItem.Attributes;
var keys = {0: 'attr1', 1: 'attr2', 2: 'attr3'};
for (var key in keys) {
var keyVal = keys[key];
var attribute = attributes[keyVal];
if (attribute != undefined) {
e.row.cells[key].innerText = attribute;
}
}
}
但是,下面的代码,我正在动态构建key对象; 属性始终未定义。
function getKeys() {
var keys = {};
$('#Equipment thead th').each(function() {
keys[this.cellIndex] = this.innerText;
});
return keys;
}
function onRowDataBound(e) {
var attributes = e.dataItem.Attributes;
var keys = getKeys();
for (var key in keys) {
var keyVal = keys[key];
var attribute = attributes[keyVal];
if (attribute != undefined) {
e.row.cells[key].innerText = attribute;
}
}
}
答案 0 :(得分:1)
尝试修剪值:
$('#Equipment thead th').each(function() {
keys[this.cellIndex] = jQuery.trim(this.innerText);
});
您知道每次迭代时keyVal
包含的确切内容吗?
答案 1 :(得分:0)
试试这个......
var keys = {};
$("#Equipment thead th").each(function (i, e) {
keys[i] = $(this).html();
});
这能让你得到你想要的吗?