2017-02-25 88 views
0

我想填充表格,內容來自PHP請求。根據我有4個狀態我想用來定義引導TR類的內容。如何使用Javascript基於內容更改表格行顏色

下面是我的代碼片段。我已經將課程分配給了TR,但這可能需要更改。

規則應該已經顯示在下面的代碼片段的TR類中。

的條件如下:

預期= BG-成功

取消= BG-危險

點播= BG-信息

偏= bg-warning

成品= BG-活躍

正弦我想使用PHP的foreach或在填寫該表,我怎樣才能使使用JavaScript或jQuery的行動態的表變色?

function reservationListFunction() { 
 
    // Declare variables 
 
    var input, filter, table, tr, td, i; 
 
    input = document.getElementById("reservationListInput"); 
 
    filter = input.value.toUpperCase(); 
 
    table = document.getElementById("reservationTable"); 
 
    tr = table.getElementsByTagName("tr"); 
 

 
    // Loop through all table rows, and hide those who don't match the search query 
 
    for (i = 0; i < tr.length; i++) { 
 
    td = tr[i].getElementsByTagName("td")[0]; 
 
    if (td) { 
 
     if (td.innerHTML.toUpperCase().indexOf(filter) > -1) { 
 
     tr[i].style.display = ""; 
 
     } else { 
 
     tr[i].style.display = "none"; 
 
     } 
 
    } 
 
    } 
 
} 
 

 
jQuery(document).ready(function($) { 
 
    $('#reservationTable tr').each(function() { 
 
     var td_value = $('td',this).eq(3).text(); 
 
     switch (td_value) { 
 
      case 'Partial': 
 
       $(this).addClass('bg-warning'); 
 
       break; 
 
       .... 
 
       And So On 
 
       .... 
 
      default: 
 
       // statements_def 
 
       break; 
 
     } 
 
    }); 
 
});
#reservationListInput { 
 
    background-image: url('./assets/fonts/searchicon.png'); 
 
    /* Add a search icon to input */ 
 
    background-position: 10px 12px; 
 
    /* Position the search icon */ 
 
    background-repeat: no-repeat; 
 
    /* Do not repeat the icon image */ 
 
    width: 100%; 
 
    /* Full-width */ 
 
    font-size: 16px; 
 
    /* Increase font-size */ 
 
    padding: 12px 20px 12px 40px; 
 
    /* Add some padding */ 
 
    border: 1px solid #ddd; 
 
    /* Add a grey border */ 
 
    margin-bottom: 12px; 
 
    /* Add some space below the input */ 
 
} 
 

 
#reservationTable { 
 
    border-collapse: collapse; 
 
    /* Collapse borders */ 
 
    width: 100%; 
 
    /* Full-width */ 
 
    border: 1px solid #ddd; 
 
    /* Add a grey border */ 
 
    font-size: 18px; 
 
    /* Increase font-size */ 
 
} 
 

 
#reservationTable th, 
 
#reservationTable td { 
 
    text-align: left; 
 
    /* Left-align text */ 
 
    padding: 12px; 
 
    /* Add padding */ 
 
} 
 

 
#reservationTable tr { 
 
    /* Add a bottom border to all table rows */ 
 
    border-bottom: 1px solid #ddd; 
 
} 
 

 
#reservationTable tr.header, 
 
#reservationTable tr:hover { 
 
    /* Add a grey background color to the table header and on hover */ 
 
    background-color: #f1f1f1; 
 
}
<link href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/css/bootstrap.min.css" rel="stylesheet"/> 
 
<input class="form-control" type="text" id="reservationListInput" onkeyup="reservationListFunction()" placeholder="Search for reservation.."> 
 

 
<table id="reservationTable"> 
 
    <tr class="header"> 
 
    <th style="width:40%;">Name</th> 
 
    <th style="width:20%;">Cabin</th> 
 
    <th style="width:20%;">Table</th> 
 
    <th style="width:20%;">Status</th> 
 
    </tr> 
 
    <tr class="bg-success"> 
 
    <td>Alfreds Futterkiste</td> 
 
    <td>49222</td> 
 
    <td>201</td> 
 
    <td>Expected</td> 
 
    </tr> 
 
    <tr class="bg-info"> 
 
    <td>Berglunds snabbkop</td> 
 
    <td>12846</td> 
 
    <td>300</td> 
 
    <td>Inhouse</td> 
 
    </tr> 
 
    <tr class="bg-danger"> 
 
    <td>Island Trading</td> 
 
    <td>11847</td> 
 
    <td>234</td> 
 
    <td>Cancelled</td> 
 
    </tr> 
 
    <tr> 
 
    <td>Koniglich Essen</td> 
 
    <td>9876</td> 
 
    <td>253</td> 
 
    <td>Partial</td> 
 
    </tr> 
 
</table>

+1

我不知道我理解你的問題。您的PHP是否提供HTML片段?行顏色的條件是什麼? –

+0

使用CSS選擇器來提供動態顏色 –

+0

基於''''tr'已經有? –

回答

0

我的回答這是工作例如...

jQuery(document).ready(function($) { 
 
    $('#reservationTable tr').each(function() { 
 
     var td_value = $('td',this).eq(3).text(); 
 
     console.log(td_value); 
 
     switch (td_value) { 
 
      case 'Expected': 
 
       $(this).addClass('bg-success'); 
 
       break; 
 

 
      default: 
 
       // statements_def 
 
       break; 
 
     } 
 
    }); 
 
});
#reservationListInput { 
 
    background-image: url('./assets/fonts/searchicon.png'); 
 
    /* Add a search icon to input */ 
 
    background-position: 10px 12px; 
 
    /* Position the search icon */ 
 
    background-repeat: no-repeat; 
 
    /* Do not repeat the icon image */ 
 
    width: 100%; 
 
    /* Full-width */ 
 
    font-size: 16px; 
 
    /* Increase font-size */ 
 
    padding: 12px 20px 12px 40px; 
 
    /* Add some padding */ 
 
    border: 1px solid #ddd; 
 
    /* Add a grey border */ 
 
    margin-bottom: 12px; 
 
    /* Add some space below the input */ 
 
} 
 

 
#reservationTable { 
 
    border-collapse: collapse; 
 
    /* Collapse borders */ 
 
    width: 100%; 
 
    /* Full-width */ 
 
    border: 1px solid #ddd; 
 
    /* Add a grey border */ 
 
    font-size: 18px; 
 
    /* Increase font-size */ 
 
} 
 

 
#reservationTable th, 
 
#reservationTable td { 
 
    text-align: left; 
 
    /* Left-align text */ 
 
    padding: 12px; 
 
    /* Add padding */ 
 
} 
 

 
#reservationTable tr { 
 
    /* Add a bottom border to all table rows */ 
 
    border-bottom: 1px solid #ddd; 
 
} 
 

 
#reservationTable tr.header, 
 
#reservationTable tr:hover { 
 
    /* Add a grey background color to the table header and on hover */ 
 
    background-color: #f1f1f1; 
 
}
<link href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/css/bootstrap.min.css" rel="stylesheet"/> 
 
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> 
 
<input class="form-control" type="text" id="reservationListInput" onkeyup="reservationListFunction()" placeholder="Search for reservation.."> 
 

 
<table id="reservationTable"> 
 
    <tr class="header"> 
 
    <th style="width:40%;">Name</th> 
 
    <th style="width:20%;">Cabin</th> 
 
    <th style="width:20%;">Table</th> 
 
    <th style="width:20%;">Status</th> 
 
    </tr> 
 
    <tr class=""> 
 
    <td>Alfreds Futterkiste</td> 
 
    <td>49222</td> 
 
    <td>201</td> 
 
    <td>Expected</td> 
 
    </tr> 
 
    <tr class=""> 
 
    <td>Berglunds snabbkop</td> 
 
    <td>12846</td> 
 
    <td>300</td> 
 
    <td>Inhouse</td> 
 
    </tr> 
 
    <tr class=""> 
 
    <td>Island Trading</td> 
 
    <td>11847</td> 
 
    <td>234</td> 
 
    <td>Cancelled</td> 
 
    </tr> 
 
    <tr class=""> 
 
    <td>Koniglich Essen</td> 
 
    <td>9876</td> 
 
    <td>253</td> 
 
    <td>Partial</td> 
 
    </tr> 
 
</table>

+0

你可以刪除其中一個答案嗎? –

+0

這可能會解決您的問題,而其他答案可能會解決其他好友的問題。答案不僅僅是爲了幫助你。 –

1

希望這給你一些見解...

jQuery(document).ready(function($) { 
    $('#reservationTable tr').each(function() { 
     var td_value = $('td',this).eq(3).text(); 
     switch (td_value) { 
      case 'Partial': 
       $(this).addClass('bg-warning'); 
       break; 
       .... 
       And So On 
       .... 
      default: 
       // statements_def 
       break; 
     } 
    }); 
}); 
+0

我排片應該是這樣的: ​​Koniglich埃森 ​​9876 ​​253 ​​部分 我還要加上動態的基礎上yourJS類,是否正確? – Chris

+0

是的。不要在HTML輸出或PHP輸出之前添加任何類。 –

+0

我將這個JS添加到代碼片段中,並將TD更改爲其初始值。但是你發佈的代碼不會改變顏色。 – Chris

0

可以基於文本使用jQuery遍歷status列,並設置background-color

var colors = { 
 
    Expected: '#90EE90', 
 
    Inhouse: '#ADD8E6', 
 
    Cancelled: '#FF0000', 
 
    Partial: '#FFA500' 
 
}; 
 

 
$('tr td:nth-child(4)').each(function() { 
 
    $this = $(this); 
 
    $this.parent().css('background-color', colors[$this.text()]); 
 
});
#reservationListInput { 
 
    background-image: url('./assets/fonts/searchicon.png'); 
 
    /* Add a search icon to input */ 
 
    background-position: 10px 12px; 
 
    /* Position the search icon */ 
 
    background-repeat: no-repeat; 
 
    /* Do not repeat the icon image */ 
 
    width: 100%; 
 
    /* Full-width */ 
 
    font-size: 16px; 
 
    /* Increase font-size */ 
 
    padding: 12px 20px 12px 40px; 
 
    /* Add some padding */ 
 
    border: 1px solid #ddd; 
 
    /* Add a grey border */ 
 
    margin-bottom: 12px; 
 
    /* Add some space below the input */ 
 
} 
 

 
#reservationTable { 
 
    border-collapse: collapse; 
 
    /* Collapse borders */ 
 
    width: 100%; 
 
    /* Full-width */ 
 
    border: 1px solid #ddd; 
 
    /* Add a grey border */ 
 
    font-size: 18px; 
 
    /* Increase font-size */ 
 
} 
 

 
#reservationTable th, 
 
#reservationTable td { 
 
    text-align: left; 
 
    /* Left-align text */ 
 
    padding: 12px; 
 
    /* Add padding */ 
 
} 
 

 
#reservationTable tr { 
 
    /* Add a bottom border to all table rows */ 
 
    border-bottom: 1px solid #ddd; 
 
} 
 

 
#reservationTable tr.header, 
 
#reservationTable tr:hover { 
 
    /* Add a grey background color to the table header and on hover */ 
 
    background-color: #f1f1f1; 
 
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> 
 
<input class="form-control" type="text" id="reservationListInput" onkeyup="reservationListFunction()" placeholder="Search for reservation.."> 
 

 
<table id="reservationTable"> 
 
    <tr class="header"> 
 
    <th style="width:40%;">Name</th> 
 
    <th style="width:20%;">Cabin</th> 
 
    <th style="width:20%;">Table</th> 
 
    <th style="width:20%;">Status</th> 
 
    </tr> 
 
    <tr class="bg-success"> 
 
    <td>Alfreds Futterkiste</td> 
 
    <td>49222</td> 
 
    <td>201</td> 
 
    <td>Expected</td> 
 
    </tr> 
 
    <tr class="bg-info"> 
 
    <td>Berglunds snabbkop</td> 
 
    <td>12846</td> 
 
    <td>300</td> 
 
    <td>Inhouse</td> 
 
    </tr> 
 
    <tr class="bg-danger"> 
 
    <td>Island Trading</td> 
 
    <td>11847</td> 
 
    <td>234</td> 
 
    <td>Cancelled</td> 
 
    </tr> 
 
    <tr class="bg-warning"> 
 
    <td>Koniglich Essen</td> 
 
    <td>9876</td> 
 
    <td>253</td> 
 
    <td>Partial</td> 
 
    </tr> 
 
</table>

+0

謝謝,但它應該採取Bootstrap類。並且向添加一個類似乎是更好的方法。 – Chris

+0

我明白了,我的回答是,如果你必須在JavaScript的前端基於列狀態的文本來做它。但是,如果你使用服務器的類名進行渲染,它會好得多! –

1

如果問題是,自舉類是沒有工作...只有我的回答是解決方案你的問題。

你沒有在你的html頁面中包含bootstrap CSS文件,或者在這樣做的時候犯了一些錯誤。

<link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/css/bootstrap.min.css"> 

這是你應該包含在<head></head>標籤中的行。

以下是演示:DEMO for you code

見密切,我沒有在你的代碼改變任何東西。

P.S.如果這不是解決方案,那麼我無法理解你的問題。