Javascript表单元格值读取器不从.net Repeater获取值

时间:2011-10-11 18:07:41

标签: javascript repeater dynamic-data

我有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#repeater构建了这个表。 当我尝试提醒值时,只有表头工作,其他值为空,尽管其中有值。 任何想法为什么?

我的页面加载功能是:

 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,               限制:真的,               最小值:0,               最大值:100,               后缀:'%',               动画:真的,               digitalRoll:是的,               thisCss:{                   位置:'亲戚',                   宽度:'105px',                   身高:'90px',                   填充:'0px',                   border:'0px',                   fontFamily:'Arial',                   fontWeight:'250',

        },

当表搜​​索循环中的函数警报时,我可以看到表中的值,并且Column标题也是警告他的值。 感谢。

1 个答案:

答案 0 :(得分:1)

我建议您确定在哪里调用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());
    });
});​​​​​​​​​