2017-10-17 77 views
4

當我第一次調用函數loadTable時,信息顯示正確,如果我再次調用函數,則信息在HTML頁面(一個在另一個之下)顯示兩次。使用jQuery清除表格

嘗試之前刪除信息循環使用:

$("#tabla").remove(); 
$("#tabla").empty(); 

但信息不會被刪除。

HTML:

<div id="divTabla"><table style="width:100%" border="1" id="tabla"></table></div> 

的JavaScript:

function loadTable(datos) { 
for (var i = 1; i < datos.length; i++) { 
    d+= '<tr>'+ 
    '<td>'+datos[i].Host+'</td>'+ 
    '<td>'+datos[i].Time+'</td>'+ 
    '<td>'+datos[i].Country+'</td>'+ 
    '<td>'+datos[i].City+'</td>'+ 
    '<td>'+datos[i].Isp+'</td>'+ 
    '<td>'+datos[i].Latitude+'</td>'+ 
    '<td>'+datos[i].Longitude+'</td>'+  
    '</tr>'; 
} 
$("#tabla").append(d); 
} 

有誰知道什麼是錯的代碼或我如何正確地刪除這些信息?

編輯:

當我打電話的方法,我做如下:

function cargarTabla(datos) { 
//Using only one at a time  
$("#tabla").empty(); //Doesn't work 
$("#tabla").remove(); //The table is never displayed 
for (var i = 1; i < datos.length; i++) { 
    d+= '<tr>'+ 
    '<td>'+datos[i].Host+'</td>'+ 
    '<td>'+datos[i].Time+'</td>'+ 
    '<td>'+datos[i].Country+'</td>'+ 
    '<td>'+datos[i].City+'</td>'+ 
    '<td>'+datos[i].Isp+'</td>'+ 
    '<td>'+datos[i].Latitude+'</td>'+ 
    '<td>'+datos[i].Longitude+'</td>'+  
    '</tr>'; 
} 
$("#tabla").append(d); 
} 

變量聲明d:它是在可裝入功能位於同一個js文件中聲明,在下面的方式(這是表頭):

var d = '<tr>'+'<th>Host</th>'+'<th>Time(ms)</th>'+'<th>Pais</th>'+'<th>Ciudad</th>'+'<th>ISP</th>'+'<th>Latitud</th>'+'<th>Longitud</th>'+'</tr>'; 
+0

而不是使用'$( 「#塔布拉」)的追加(d);'你可以使用'$( 「#塔布拉」)HTML(d);' – Panther

+0

您是否嘗試過使用'$( 「#tabla td」)。empty()'? – arielnmz

+0

@arielnmz是的,但它不起作用 –

回答

3

這裏的問題不是empty()不工作。問題是你使用變量d,你永遠不會重置它,所以它保存了前一次的值。

function loadTable(datos) { 
    var d = ""; // <-------- 
    for (var i = 1; i < datos.length; i++) { 
    d+= '<tr>'+ 
    '<td>'+datos[i].Host+'</td>'+ 
    '<td>'+datos[i].Time+'</td>'+ 
    '<td>'+datos[i].Country+'</td>'+ 
    '<td>'+datos[i].City+'</td>'+ 
    '<td>'+datos[i].Isp+'</td>'+ 
    '<td>'+datos[i].Latitude+'</td>'+ 
    '<td>'+datos[i].Longitude+'</td>'+  
    '</tr>'; 
    } 
    $("#tabla").empty().append(d); 
} 
+0

你是我的英雄,非常感謝你,這解決了這個問題。 –

-1

變化的函數的最後一行這個

$("#tabla").empty().html(d); 
+0

不工作??? – Osama

+1

我沒有投票,但不是'.empty()'方法?另外,OP表示他們已經嘗試了'.empty()'和'.remove()'。 – nnnnnn

+0

不起作用,信息顯示正確,但在第二次調用中,它開始累積而不清除以前加載的信息。 –

0

.remove()將刪除該表。在函數loadTable的第一行調用.empty()。變量'd'也從未被聲明過,或者它被聲明在您發佈的代碼之外,並且永遠不會被重置。在函數中定義d以加載表並將其設置爲空。你也是從1開始你的for循環,如果你不想排除第一行,從0開始。

loadTable([{Host: 'host', Time: 'time', Country: 'country', City: 'city', Isp: 'isp', Latitude: 'latitue', Longitude: 'longitude'}]); 

function loadTable(datos) { 
$("#tabla").empty(); 
var d = ''; 
for (var i = 0; i < datos.length; i++) { 
    d+= '<tr>'+ 
    '<td>'+datos[i].Host+'</td>'+ 
    '<td>'+datos[i].Time+'</td>'+ 
    '<td>'+datos[i].Country+'</td>'+ 
    '<td>'+datos[i].City+'</td>'+ 
    '<td>'+datos[i].Isp+'</td>'+ 
    '<td>'+datos[i].Latitude+'</td>'+ 
    '<td>'+datos[i].Longitude+'</td>'+  
    '</tr>'; 
} 
$("#tabla").append(d); 
}