2016-04-06 3 views
2

Ich habe einige CSV zu HTML-Generator. Es generiert CSV-Daten in HTML-Tabelle. Zum BeispielWie kann ich ein jquery-Skript erstellen, das die Tabelle ausblendet, wenn die Tabelle leer ist?

<table><tbody><tr><th>Name 1</th><th>Name 2</th></tr> 
<tr><td>123</td><td>123</td></tr> 
</tbody></table> 

Manchmal sind keine Daten zu generieren. Dann sieht Tabelle so aus (es zeigt nur Header)

In diesem Fall möchte ich anstelle der Tabelle etwas Text zeigen. Sagen wir:

<h1>There is no data man!</h1> 
<p>Contact to Us</p> 

Wie kann ich das tun?

+1

.... sollten Sie erwägen, einige JS zu teilen, zumindest Ihre Funktion, die Ihre Tabelle zurückgibt, und so, wie es aufgerufen wird .... –

+0

Es sollte der Code ausgeführt werden, der die Tabelle erzeugt –

+0

Wie Sie die Daten generieren, die in einer Tabelle angezeigt werden –

Antwort

0

Sie können Anzahl der Zeilen in der Tabelle überprüfen und html ändern, wenn es leer ist.

-Code ist so etwas wie dieses:

$(document).ready(function(){ 
    var rowCount = $('tbody > tr').length; 

    if(rowCount > 1){ // check one more after header 
     $('table').replaceWith(" <h1>There is no data man!</h1><p>Contact to Us</p>") 
    } 
}) 

Edit: nach Pimskie Kommentar, ich geändert Code. Hier

ist ein funktionierendes Beispiel https://plnkr.co/edit/CSss8LqJ0uC5pbkoPrAu?p=preview

+0

Dies verbirgt die Tabelle und fügt eine Nachricht hinzu. Ist die Nachricht nicht auch versteckt? – Pimmol

+0

Es wird anhängen nach. Ich denke, es wird sichtbar sein – Ygalbel

+0

Sie haben Recht! Ich habe den Code geändert – Ygalbel

0

versuchen dieses Kontroll

$('table').each(function(){ 
 
var element = $(this).find('tbody tr:nth-child(2)').length; 
 
if (element == 0) { 
 
$(this).empty(); 
 
$(this).append(" <h1>There is no data man!</h1><p>Contact to Us</p>") 
 
} 
 
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.7.2/jquery.min.js"></script> 
 
<table><tbody><tr><th>Name 1</th><th>Name 2</th></tr> 
 

 
</tbody></table>

-1

var tbody = $("#incidents tbody"); 
 

 
if (tbody.children().length == 0) { 
 
alert('There is no data man! Contact us'); 
 
    
 
} 
 
else 
 
{ 
 
alert('Table contains some data'); 
 
}
Try This One
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.7.2/jquery.min.js"></script> 
 
<div> 
 
<table id="incidents"> 
 
    <tbody> 
 
     <tr><td>one</td></tr> 
 
     <tr><td>two</td></tr> 
 
     <tr><td>three</td></tr> 
 
    </tbody> 
 
</table> 
 

 
</div>

0

Setzen Sie den th in einem thead. Danach wird ein einfaches vanillaJS:

var table = document.querySelector('table'); 
var rows = document.querySelector('tbody > tr'); 

if (rows.length === 0) { 
    table.parentNode.innerHTML = '<h1>There is no data man!</h1><p>Contact to Us</p>'; 
} 

Demo: https://jsfiddle.net/h8y1jLca/3/

bearbeiten

, wenn Sie die th ‚s in einem thead aus irgendeinem Grund nicht vergeben können, funktioniert das auch: https://jsfiddle.net/h8y1jLca/4/

Verwandte Themen