Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/391.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 如何通过单击将内容打印多次?_Javascript_Jquery_Printing - Fatal编程技术网

Javascript 如何通过单击将内容打印多次?

Javascript 如何通过单击将内容打印多次?,javascript,jquery,printing,Javascript,Jquery,Printing,我希望当有人单击“打印”时,此iframe可以打印多次。这是我到目前为止得到的,但它只打印了一次。有人有什么建议吗?提前谢谢 $("#printing").on('click',function(){ var printYesNo = 1; alert("hi"); for(var count = 1; count < 3; count++) {

我希望当有人单击“打印”时,此iframe可以打印多次。这是我到目前为止得到的,但它只打印了一次。有人有什么建议吗?提前谢谢

$("#printing").on('click',function(){
                var printYesNo = 1;     
                alert("hi");    
                for(var count = 1; count < 3; count++) {
                    $('body').append('<iframe src="flyer.php?userNow='+count+'" id="printIFrame" name="printIFrame"></iframe>');
                    $('#printIFrame').bind('load', 
                        function() {                                
                            window.frames['printIFrame'].focus(); 
                            window.frames['printIFrame'].print();                           
                        }                       
                    );
                }
});

您为每个元素指定了相同的ID和名称,然后集中打印等。这似乎是错误的,如果稍有不同,将在某些浏览器中触发多个打印对话框打印iFrame而不是跨浏览器打印:

$("#printing").on('click', function () {
    for (var count = 1; count < 13; count++) {
        (function(k) {
            $('<iframe />', {
                id   : 'printIFrame' + k,
                name : 'printIFrame' + k,
                on   : {
                    load: function() {
                        this.contentWindow.focus();
                        this.contentWindow.print();
                    }
                },
                src  : 'flyer.php?userNow=' + k,
            }).appendTo('body');
        })(count);
    }
});

您正在添加多个具有相同值的id,因此HTML将无效,jQuery将无法识别元素列表,而只能识别第一个匹配的元素。因此第一个iframe。@LightStyle,您的意思是将其从id=printIFrame更改为class=?是的,这是一个解决方案。否则,您可以使用iframe[name='printIFrame']作为jQuery选择器来选择所有iframe。但类肯定是更好的选择。使用类或在id中添加数字。如果使用类,则不需要在for循环中绑定onload函数。只需注意,在您的情况下,最好使用$document.on'load','.printIFrame',函数{…};因为它们是动态添加的元素。这实际上大部分是有效的。唯一的问题是,当我增加计数时,唯一要打印的页面是第一个数字和最后一个数字。有什么想法吗?那似乎没什么改变,所以我收回了。这个循环在firefox中似乎工作正常,但在chrome中,它只打印第一个和最后一个id。@gotguts-似乎很奇怪,我使用chrome,所有打印对话框都打开了,k的值似乎正确?我想你在onload函数中有这个函数,然后有一个非常基本的主体,对吗?我一辈子都不明白为什么我会得到一个和你不一样的结果。