#javascript #html #django
Вопрос:
У меня есть форма модели, которую я отображаю в таблице. Форма содержит около 40 полей, разбитых на 6 различных таблиц. Я настроил операторы if, чтобы не отображать элементы таблицы, если поле в базе данных пустое. Это работает, как и ожидалось, единственная проблема заключается в том, что если все элементы скрыты, заголовок таблицы все равно отображается. Как я могу скрыть заголовок таблицы, если все элементы в этой конкретной таблице скрыты.
<table class="post-table">
<tr>
<th class="table-header" colspan="2">
<h3>Pool Details</h3>
</th>
</tr>
<tbody>
{% if post.pool_size != '' %}
<tr>
<td>pool size:</td>
<td>{{ post.pool_size }}</td>
</tr>
{% endif %}
{% if post.pool_style != '' %}
<tr>
<td>Pool Style:</td>
<td>{{ post.pool_style }}</td>
</tr>
{% endif %}
</tbody>
</table>
Обновить:
<table class="post-table">
<tr>
<th class="table-header" COLSPAN="1" id="tab_header">
<H3>ADDITIONAL INFO</H3>
</th>
</tr>
<tbody id="tab_body">
{% if post.additional_info != '' %}
<tr>
<td>{{ post.additional_info }}</td>
</tr>
{% endif %}
</tbody>
</table>
<br>
<script>
let tbody = document.getElementById("tab_body").innerHTML;
if (tbody === '') {
tab_header = document.getElementById("tab_header").innerHTML = " ";
} else {
// Nothing to do i guess
}
</script>
Ответ №1:
Вы можете использовать JavaScript, чтобы скрыть заголовок, если <tbody>
он пуст : Предположим, что <th id="tab_header">Tab header</th>
<tbody id="tab_body">Some content here</tbody>
у нас есть
let tbody = document.getElementById("tab_body").innerHTML;
# Check if it contains something
if (tbody === '') {
tab_header = document.getElementById("tab_header").innerHTML = "";
} else {
// Nothing to do i guess
}
NB Имейте в виду, что проверка содержимого может быть не пустой строкой, а чем-то другим.
Комментарии:
1. Не могли бы вы взглянуть на мое обновление, я считаю, что оно реализовано правильно, но оно не скрывает заголовок таблицы.
2. Можете ли вы войти в var tbody в консоли :
console.log(tbody)
3. Попробуйте :
console.log(tbody ==='')
проверить, является ли tbody пустой строкой4. возвращает
false
, возможно, мне следует вместо этого использовать null?5. Постарайтесь поставить
id="tab_header"
все на<tr>
свои места. При этом вы также удалите узел, на которомcss
применяется (<th>
)
Ответ №2:
<table class="post-table" id="table-example">
<tr>
<th class="table-header" COLSPAN="1" id="tab_header">
<H3>ADDITIONAL INFO</H3>
</th>
</tr>
<tbody id="tab_body">
{% if post.additional_info != '' %}
<tr>
<td id="test">{{ post.additional_info }}</td>
</tr>
{% endif %}
</tbody>
</table>
<script>
var tbl = document.getElementById('table-example');
if (tbl.rows.length == 1) {
console.log('IT WORKED')
tab_header = document.getElementById("tab_header").innerHTML = "";
}
console.log(tbl.rows.length)
</script>