2015-02-27 3 views
-1

У меня есть следующий элемент таблицы:Очистка содержимого HTMLTableElement

<table id="my-table" class="table table-striped table-hover ">Loading...</table> 

Я динамически создавать таблицы внутри вызова AJAX, а затем записывает данные в таблицу:

<script> 
$.ajax({ 
    success:function(result){ 
    $.getScript("table-sort-controller.js", function() { 
     sortTable("my-table") 
    }); //makes table sortable using DataTables 
    $.getScript("search-controller.js"); //makes table searchable using DataTables 
    }, 
    url: "http://myserver:8080/url/" 
    }).then(function(data) { 
    var table = "<thead>"; 
    table += createTableHeader(data); //fake method to simplify code 
    table += "</thead>"; 
    table += "<tbody id='sortable-cells'>"; 
    table += createTableBody(data); //fake method to simplify code 
    table += "</tbody>"; 
    //This is the line where I try to clear "Loading...". 
    document.getElementById("my-table").innerHTML = table; 
}); 
</script> 

Однако , Я не могу удалить "Loading..." сверху поверх загруженной таблицы. Я попытался следующие в линии непосредственно после моего создания таблицы:

document.getElementById("my-table").innerHTML = ""; 
document.getElementById("my-table").empty(); 
//a few other attempts I cannot remember 

Некоторые подробнее:

alert(document.getElementById("my-table")); //output is [object HTMLTableElement] 
alert(document.getElementById("my-table").innerHTML); //output is empty alert 
alert(document.getElementById("my-table").getCaption()); //console says "undefined is not a function" 

Я неясно, почему неопределенными getCaption() возвращается, как представляется, функция под W3C.

Как удалить "Loading..." после того, как моя таблица закончила загрузку и до того, как я заполнил #my-table с помощью соответствующего HTML? В качестве альтернативы, как я могу удалить "Loading..." сразу после написания таблицы?

+6

Не используйте недействительный HTML в первую очередь. Дерево DOM, созданное вашим «

». Некоторый текст
'предполагает размещение текстового узла перед таблицей. Вот почему опустошение это не имело никакого эффекта. Текст отсутствует в таблице. – Phylogenesis

+0

@ Liam этот список не является точным. '' не может быть дочерним элементом '

' и вам не хватает элементов – charlietfl

+1

@ Филогенез правилен. Лучше всего включить «loading ...» внутри манекена '

' row. * Это * будет реально жить внутри таблицы, где она будет удалена, когда вы очистите содержимое таблицы. –

ответ

0

Благодаря @Phylogenesis и @Paul Roub, исправил это!

Я изменил

<table id="my-table" class="table table-striped table-hover ">Loading...</table> 

в

<table id="my-table" class="table table-striped table-hover "><tr><td>Loading...</td></tr></table> 

Затем я добавил следующее удалить старую "Loading...".

$('#my-table').empty(); 

Теперь это работает. Благодаря!

EDIT: В моем конкретном случае я действительно смог удалить очищающий вызов вообще, поскольку я переписывал элемент в самой следующей строке.

+1

'

' не имеет отношения к действительности. Либо «' или '' будет правильным. –

+0

@PaulRoub спасибо! обновленный ответ – Evorlor

+1

Поскольку вы используете jQuery уже, я бы предпочел видеть '$ ('# my-table'). empty();'. – Phylogenesis

Смежные вопросы

Загрузка ...
...
...
...