document.body.innerHTML = “” очищают веб-страницу?

Вы можете попробовать изменить

meals = Meal.objects.filter(restaurant = request.user.restaurant).order_by("-id")

на

meals = Meal.objects.filter(restaurant = request.user.restaurant).prefetch_related('extras').order_by("-id")

и повторить попытку.

Документ об этом в prefetch_related

.

27
задан Anders R. Bystrup 27 February 2013 в 10:11
поделиться

4 ответа

document.body.innerHTML = ''; очищает body, да. Но он очищает innerHTML так, как он есть на момент запуска кода. Когда вы запускаете код до того, как изображения и скрипт на самом деле находятся в body, он пытается очистить body, но нечего очищать.

Если вы хотите очистить body, вы должны запустить код после того, как body будет заполнено содержимым. Вы можете сделать это, поместив блок <script> как последний дочерний элемент body, чтобы все загружалось до запуска кода, или вы должны использовать какой-либо способ прослушивания события dom:loaded.

44
ответ дан Douwe Maan 28 November 2019 в 04:46
поделиться

Как говорили другие, простое решение - поместить ваш скрипт внизу страницы, потому что все элементы DOM загружаются синхронно сверху вниз. В противном случае, я думаю, что вы ищете document.onload(() => {callback_body}) или window.onload(() => {callback_body}), как сказал Эрик. Это позволяет вам выполнить сценарий при возникновении события dom:loaded, как сказал Доу Маан. Не уверен насчет свойств window.onload, но document.onload запускается только после загрузки всех элементов, css и скриптов. В вашем случае:

<script type="text/javascript">
    document.onload(() =>
        document.body.innerHTML = "";
    )
</script>
1
ответ дан ThisGuyCantEven 28 November 2019 в 04:46
поделиться

В развитие ответа Douwem, в теге script поместите ваш код в onload:

<script type="text/javascript">
    window.onload=function(){
       document.body.innerHTML = "";
    }
</script>
14
ответ дан 28 November 2019 в 04:46
поделиться

Только что получил тот же вопрос; нашел другое разрешение, просто подумал, что поделюсь им:

В файле заголовка, включенном во все мои другие файлы:

static char * file_bname = NULL;
#define __STRIPPED_FILE__   (file_bname ?: (file_bname = basename(__FILE__)))

Надеюсь, это полезно и кому-то другому:)

-121--2603084-

Я не уверен, чего вы пытаетесь достичь, но вы можете подумать об использовании jQuery, который позволяет поместить ваш код в тэг head или отдельный файл сценария и по-прежнему выполнять код после загрузки DOM.

Затем можно выполнить следующее:

$(document).ready(function() {
$(document).remove();
});

, а также выборочно удалить элементы (все DIV, только DIV с определенными классами и т.д.)

0
ответ дан 28 November 2019 в 04:46
поделиться
Другие вопросы по тегам:

Похожие вопросы: