使用三元运算符和方法来获取表中的行数时遇到问题

时间:2013-11-06 19:55:43

标签: jquery dom ternary-operator

我正在尝试使用从数据库中提取的一些数据行来做一些事情。我要做的第一件事是将行保存的日期与今天的日期进行比较,如果保存行的日期已经过去,我需要删除它,同时将相关日期附加到表中。 当遍历数据库行的for循环完成时,我需要检查表中的行数。如果它是空的,因为只有过去的日期行并且它们都被删除了,我需要向用户显示一条解释空表的消息,否则我不需要显示任何内容。 这是我尝试使用三元运算符和获取表行数的jquery方法的组合。由于某种原因,无论行数是零还是更多,三元运算符的第二个表达式都会启动。因此,即使行数为零,代码也会像存在的行一样,并且不会显示用于空表的消息。 为了便于阅读,我省略了一些代码。

//HTML

<table id="volunteerListTable">
         <tbody id="list">

        </tbody>

     </table> 

//JQUERY




      if(results.length !== 0){

// SAVE TODAYS DATE IN A VARIABLE CALLED "todaysDate"

//LOOP THROUGH DATABASE QUERY RESULTS

        for (var i = 0; i < results.length; i++) { 

//SAVE THE DATE SPECIFIED IN THE ROW AS A VARIABLE CALLED "showDate"
//COMPARE THE DATES IN A CONDITIONAL     

                                 if(todaysDate > showDate){

                                     //SHOW DATE HAS PASSED, DELETE IT FROM DATABASE 
                                   results[i].destroy();


                                    }else{

                                        //SHOW DATE STILL VALID. APPEND ROW TO TABLE ALONG WITH A HEADER
                                     $('tbody').append("<tr><th></th><th>Show Name</th><th>Location</th><th>Date</th><th>Time</th><th>People Needed</th><th>Cover</th></tr>");   
                                        $('#list').append("<tr id='row' class='Row'><td><figure id ='"+comicID+"'><img width='100' height='100' src='https://graph.facebook.com/"+comicID+"/picture'/><figcaption>"+comic+"</figcaption></figure></td><td id='showName'>"+ showName +"</td><td id='Location'>" + location + "</td><td id='Date'>" + date + "</td><td id='Time'>" + time + "</td><td id='Guests'>" + guests + "</td><td id='cover'>" + cover + "</td><td><a href='#' name ='" +showId+"' id='volunteer'>I'm Available</a></td></tr>"); 

                                    }//closes else

            }//closes for

//NOW CHECK THE NUMBER OF ROWS IN THE TABLE AND SEE IF IT IS EMPTY. IF SO, SHOW THE MESSAGE

            var rowNum = $('#list tr:last').index() + 1;

            rowNum = 0 ? $('#noShows').show() : console.log("number of rows:"+rowNum);

//WHEN THERE ARE NO ROWS THE CONSOLE WILL LOG "number of rows: 0", BUT IF THERE ARE ZERO ROWS THEN FIRST EXPRESSION OF THE TERNARY OPERATOR SHOULD WORK!!!!

    }else{

        //SHOWS MESSAGE IF THERE ARE NO RESULTS FROM THE DATABASE AT ALL

    }

1 个答案:

答案 0 :(得分:1)

你的行:

rowNum = 0 ? $('#noShows').show() : console.log("number of rows:"+rowNum);

不正确,有一些问题。我看到的第一个问题是rowNum = 0是赋值,而不是布尔表达式。

你应该使用if语句:

if(rowNum==0)
{
    $('#noShows').show();
}
else
{
    console.log("number of rows:"+rowNum);
}

可以找到更多信息,查看using ternary operator in javascript to invoke two functions?

的答案