Средство чтения значений ячеек таблицы Javascript не получает значения из .net Repeater - PullRequest
0 голосов
/ 11 октября 2011

У меня есть функция JS, которая читает и суммирует столбец таблицы следующим образом:

function calculateValue() {
        var sum = 0, index = 0;
        var table = document.getElementById("mytab1");
        for (var i = 1, row; row = table.rows[i]; i++) {
            //alert(row.cells[4].firstChild.nodeValue);
            sum += row.cells[4].firstChild.nodeValue;
            index++;
        }
        //alert(sum / index + "_" + sum + "--" + index);
        return sum / index;
    }

Эта таблица («mytab1») является динамической таблицей, ретранслятор .net C # создает эту таблицу.когда я пытаюсь предупредить значения, работает только заголовок таблицы, остальные значения пусты, хотя в них есть значения.Любые идеи почему?

моя функция загрузки страницы:

 protected void Page_Load(object sender, EventArgs e)
{
    if (!IsPostBack)
    {
        load_profiles();
        ViewState["Time"] = "2";                   
        LoadGoals(2,0); /* this function put List<> in Repeater and creates a table   
                           with the values */          
    }
}

Часть js, которая вызывает функцию:

var def = {
процент: CalculateValue () ||0, масштаб: 100, лимит: true, минимум: 0, максимум: 100, суффикс: '%', animate: true, digitalRoll: true, thisCss: {position:'lative ', ширина:' 105px ', высота:'90px ', отступы:' 0px ', граница:' 0px ', fontFamily:' Arial ', fontWeight:' 250 ',

        },

Когда функция оповещает в цикле поиска таблицы, яможно увидеть значения внутри таблицы, а также заголовок столбца предупреждает его значение.Спасибо.

1 Ответ

1 голос
/ 11 октября 2011

Я бы посоветовал вам убедиться в том, что вы вызываете свой javascript:

var def = {
percentage: calculateValue() || 0, scale: 100, limit: true, minimum: 0, maximum: 100, suffix: ' %', animate: true, digitalRoll: true, thisCss: { position: 'relative', width: '105px', height: '90px', padding: '0px', border: '0px', fontFamily: 'Arial', fontWeight: '250',
    },

либо a) после элемента управления

<asp:Repeater></asp:Repeater>

, либо b) добавьте

$(document).ready(function() {
// Your code goes here
});

бит JQuery на вашу страницу, чтобы убедиться, что DOM полностью загружен, прежде чем пытаться прочитать значения из таблицы.

РЕДАКТИРОВАТЬ:

Вы также можете использовать селектор JQuery для доступа и суммирования значений вместо использования вашего цикла.

var sum = 0;
$('#mytab1 .your-new-table-cell-class').each(function() {
    sum += Number($(this).val());
    });
});​​​​​​​​​
...