无法使用哈希语法从JS对象检索值

时间:2010-12-08 23:09:37

标签: javascript jquery json

通过[]运算符从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;
        }
    }
}

2 个答案:

答案 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();
});

这能让你得到你想要的吗?