IE 11和Chrome

时间:2016-07-29 08:30:44

标签: javascript jquery asp.net google-chrome

我有一个GridView,它有一个复选框和一个“onClick”函数“VerifyChecked”,它附加到Grid的行数据绑定事件中的每个checbox上。

在我的Javascript中,函数体如下所示

 function VerifyChecked() {          
        var gv = document.getElementById('ctl00_ContentPlaceHolder1_grdProductNotes');
        var btn = document.getElementById('ctl00_ContentPlaceHolder1_btnAdd');
        var btn2 = document.getElementById('ctl00_ContentPlaceHolder1_btnAdd1');
        btn.disabled = true;
        btn2.disabled = true;
        var strEnabled;
        var strPk = '';
        var strSeq = '';
        var count = 0;
        for (i = 1; i < gv.rows.length; i++) {
            var row = gv.rows[i];
            var ckbox = row.cells[0].getElementsByTagName('input')
            if (ckbox[0].checked) {
                btn.disabled = false;
                btn2.disabled = false;
                count = count + 1;

                var pk = row.cells[0].all[2].innerText; 

应用程序在Internet Explorer版本10中不会引发任何错误。 但是在版本11和chrome中,当我检查控制台时。我收到以下错误。

“UnCaught TypeError:无法读取未定义的属性2”

导致错误的行是 var pk = row.cells[0].all[2].innerText; 编辑1:

我发现“Object.all”属性现在已经过时,因为我收到错误。但是现在我无法访问所有集合的元素。有没有解决方法来实现这个目标?

All property is obsolete

1 个答案:

答案 0 :(得分:0)

您可以使用childrenchildNodes集合:

var pk = row.cells[0].children[2].innerText;
var pk = row.cells[0].childNodes[n].innerText;

请注意,childNodes还包含文本节点。因此,元素的索引可能与过时的all属性不同。