如果样式显示值等于Javascript / JQuery

时间:2014-12-17 10:51:23

标签: javascript jquery if-statement

我想检查显示是否等于none或表行。我目前正在使用这个:

的Javascript / JQuery的:

function changeDisplay(element){
    var clickedLi = $(element).closest("li");
    var pageList = $(".paginering li");
    var trList = $(".tabelOpenstaand tbody tr.hoofdRij");
    var trNumber = $(".tabelOpenstaand tbody tr.hoofdRij").length;

    debugger;

    for (var i = 0; i < trNumber; i++){
        if (trList[i].css("display") == "table-row"){
            trList[i].css("display", "none");
        }
    }
}

目前我收到错误:&#39; Uncaught TypeError:undefined不是函数&#39;在if行上。我该如何解决这个问题? trList填充了正确的元素。

4 个答案:

答案 0 :(得分:2)

而是trList [i],尝试trList.eq(i)

它会变成

    if (trList.eq(i).css("display") == "table-row"){
        trList.eq(i).css("display", "none");
    }

Source

答案 1 :(得分:1)

有很多相关解决方法的答案,但没有人真正解释过这个失败的原因。

$('selector')返回一个jQuery对象。该对象具有保存DOM元素的数字索引。

这意味着$('selector')[0]返回一个DOM元素,而不是jQuery对象,因此没有.css()方法。

答案 2 :(得分:0)

trList不是一个数组,它是一个对象。因此trList[i]无效。

你必须做一个foreach。

trList.each(function(){
   if($(this).css("display") == "table-row"){
      $(this).css("display", "none");
   }
});

答案 3 :(得分:0)

当我走一个物体时,我经常写这样的代码:

function changeDisplay( element ){
    // var clickedLi = $(element).closest("li");
    // var pageList = $(".paginering li");
    // var trList = $(".tabelOpenstaand tbody tr.hoofdRij");
    // var trNumber = $(".tabelOpenstaand tbody tr.hoofdRij").length;

    var trList = document.querySelectorAll( ".tabelOpenstaand tbody tr.hoofdRij" );

    for ( var i in trList ){
        if( !i.match( /\D/ ) continue;
        if( trList[i].css("display") == "table-row" ){
            trList[i].css( "display", "none" );
        }
    }
}

&#34; String.match()&#34;当我走进一个物体时很有用。我更喜欢使用&#34;(var ... in ...)&#34;句法。只是个人的观点。