Не удается получить значения из объекта JS с использованием синтаксиса хэша - PullRequest
1 голос
/ 09 декабря 2010

Я вижу странное поведение при доступе к свойствам из объекта 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;
        }
    }
}

Однако, следующий код, где я динамически строю объект keys; атрибут всегда неопределен.

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 ]

1 голос
/ 09 декабря 2010

Попробуйте обрезать значение:

$('#Equipment thead th').each(function() {
    keys[this.cellIndex] = jQuery.trim(this.innerText);
});

Знаете ли вы, что именно keyVal содержит на каждой итерации?

0 голосов
/ 09 декабря 2010

Попробуйте это ...

var keys = {};
$("#Equipment thead th").each(function (i, e) {
  keys[i] = $(this).html();
});

Это дает тебе то, что ты хочешь?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...