array_name.className在IE中给出“className为null或不是对象”

时间:2011-02-07 06:26:29

标签: javascript

我正在使用jQuery Datatables插件来显示数据。 这在Mozilla和Chrome中完美运行,但在IE中,它可以生成 以下行中的“className为null或不是对象”错误 jQuery.Datatables.js中的代码

代码: if(nTds [i] .className.indexOf(sClass +“1”)!= -1) {     for(j = 0,jLen =(nTds.length / iColumns); j

我不确定问题是否属于“indexOf”或“className” 因为IE不支持indexOf

对此问题的任何帮助都表示赞赏

3 个答案:

答案 0 :(得分:1)

对象本身存在问题......自然也会出现属性。

我用过:

if(typeof nTds[i] != 'undefined' && typeof nTds[i] !=null && typeof nTds[i] !='null')
{
   // original className check code in here
}

答案 1 :(得分:0)

您获得的元素没有定义className属性。在indexOf检查之前进行类型检查。

if(typeof nTds[i].className != 'undefined' && nTds[i].className.indexOf(sClass+"1") != -1) { ...

编辑:

请准确尝试此代码。

    if(typeof nTds[i].className != 'undefined') {
        if ( nTds[i].className.indexOf(sClass + "1") != -1) { 
            for ( j=0, jLen=(nTds.length/iColumns) ; j<jLen ; j++ ) { 
                nTds[(iColumns*j)+i].className = $.trim( nTds[(iColumns*j)+i].className.replace( sClass+"1", "" ) ); 
            } 
        } else if ( nTds[i].className.indexOf(sClass+"2") != -1 ) { 
            for ( j=0, jLen=(nTds.length/iColumns) ; j<jLen ; j++ ) { 
                nTds[(iColumns*j)+i].className = $.trim( nTds[(iColumns*j)+i].className.replace( sClass+"2", "" ) ); 
            } 
        }
    }

答案 2 :(得分:0)

与Daniel的答案基本相同,但不需要明确检查undefined

if ( nTds[i].className && nTds[i].className.indexOf(sClass+"1") != -1 ) { ...