首页 > 解决方案 > 页面加载时点击有效

问题描述

需要帮助,click页面加载后立即工作。我阅读并尝试了不同的选项,但没有帮助。我找不到正确的解决方案。

    $.ajax({
        url: '/print',
        success: function (response) {

            function printContent(el) {
                var restorepage = document.body.innerHTML;
                var printcontent = document.getElementById(el).innerHTML;
                document.body.innerHTML = printcontent;
                window.print();
                document.body.innerHTML = restorepage;
            }

            response.forEach(function (element, index) {
                $('div.h4').after(
                    '<div id="print_' + index + '">' +
                    '<p>' + element + '</p>' +
                    '</div>' +
                    '<button id="button_' + index + '">Print</button>'
                );

                var el = document.getElementById('button_' + index);
                el.addEventListener('click', printContent('print_' + index), false);
            })
        }
    });

HTML:

<div class="h4"></div>

标签: javascriptjquery

解决方案


您的问题在于el.addEventListener('click', printContent('print_' + index), false);您立即调用该函数,而不是替换上面提到的行,如下所示

el.addEventListener('click', printContent, false);

并改变你的printContent功能如下

function printContent() {
   var el = $(this).prev().attr('id');
   var restorepage = document.body.innerHTML;
   var printcontent = document.getElementById(el).innerHTML;
   document.body.innerHTML = printcontent;
   window.print();
   document.body.innerHTML = restorepage;
}

我没有测试过它,但它应该可以工作。如果它不起作用,请告诉我。


推荐阅读