JS: отображение содержимого onclick внутри цикла html

Я ищу предварительный просмотр, когда пользователь нажимает на глификон. Я пробовал кое-что, но до сих пор не борюсь с отображением картинки.

У меня очень простой HTML-код с Javascript внутри, например:

{% for document in publication.documents.all %}
    <table class = "table table-condensed">
        <tbody>
            <tr>
                <script>
                    document.getElementById('cover-icon{{ document.id }}').onclick=function(){
                    // Remove any element-specific value, falling back to stylesheets
                    document.getElementById('coverPDF{{ document.id }}').style.display='';
                    };
                </script>

                <td class = "col-md-1"><span class = "glyphicon glyphicon-blackboard cover-icon" id = "cover-icon{{ document.id }}"></span>
                    <div id = "coverPDF{{ document.id }}" style = "display: none;">
                        {% if document.format == 'pdf' %}

                            <script src = "https://mozilla.github.io/pdf.js/build/pdf.js"></script>

                              <script type = "text/javascript">
                              var document_upload = "{{ document.upload }}";
                              pdfjsLib.getDocument('http://localhost:8000/media/'+document_upload).then(function (pdf) {
                                pdf.getPage(1).then(function (page) {
                                    var scale = 0.30;
                                    var viewport = page.getViewport(scale);

                                    var canvas = document.getElementById('test{{ document.id }}');
                                    var context = canvas.getContext('2d');
                                    canvas.height = viewport.height;
                                    canvas.width = viewport.width;

                                    var renderContext = {
                                        canvasContext: context,
                                        viewport: viewport
                                    };
                                    page.render(renderContext);
                                });
                              });
                            </script>
                            <canvas id = "test{{ document.id }}" style = "border:1px solid #000000;"></canvas>
                        {% endif %}
                    </div>
                </td>
            </tr>
        </tbody>
    </table>
{% endfor %}

Я просматриваю список объектов документа, и для каждого объекта я хотел бы щелкнуть глификон, чтобы отобразить предварительный просмотр, предоставленный вторым сценарием JS внутри PDF.js. Этот второй работает нормально, но я не пытаюсь отобразить предварительный просмотр.

Не могли бы вы помочь мне ? Я новичок в JavaScript.

Код, который необходимо улучшить:

<script>
    document.getElementById('cover-icon{{ document.id }}').onclick=function(){
    // Remove any element-specific value, falling back to stylesheets
    document.getElementById('coverPDF{{ document.id }}').style.display='';
                    };
</script>

Неправильно повторять теги скрипта в цикле ..?

Teemu 01.10.2018 09:56

@Teemu Да, но я должен установить сценарий внутри своего цикла, потому что я использую переменные django. Второй скрипт должен быть внутри, но и первый тоже, потому что я перебираю id, который содержит переменные django.

Essex 01.10.2018 09:58

Кажется, что большинство скриптов манипулируют HTML с помощью «переменных Django», почему бы не создать HTML на стороне сервера? И уж точно не нужно добавлять десятки скриптов pdf.js ...

Teemu 01.10.2018 10:00

Потому что я не знаю, как я могу это сделать. И я думал, что мой сценарий хорош, за исключением этой проблемы, связанной с отображаемой частью.

Essex 01.10.2018 10:06
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
В настоящее время производительность загрузки веб-сайта имеет решающее значение не только для удобства пользователей, но и для ранжирования в...
Безумие обратных вызовов в javascript [JS]
Безумие обратных вызовов в javascript [JS]
Здравствуйте! Юный падаван 🚀. Присоединяйся ко мне, чтобы разобраться в одной из самых запутанных концепций, когда вы начинаете изучать мир...
Система управления парковками с использованием HTML, CSS и JavaScript
Система управления парковками с использованием HTML, CSS и JavaScript
Веб-сайт по управлению парковками был создан с использованием HTML, CSS и JavaScript. Это простой сайт, ничего вычурного. Основная цель -...
JavaScript Вопросы с множественным выбором и ответы
JavaScript Вопросы с множественным выбором и ответы
Если вы ищете платформу, которая предоставляет вам бесплатный тест JavaScript MCQ (Multiple Choice Questions With Answers) для оценки ваших знаний,...
0
4
52
0

Другие вопросы по теме