Twitter bootstrap 无法使打印按钮在Carousel的Twitter引导模式弹出窗口中工作

Twitter bootstrap 无法使打印按钮在Carousel的Twitter引导模式弹出窗口中工作,twitter-bootstrap,Twitter Bootstrap,我按照问题“推特引导:打印模态窗口的内容”的答案,但我还没有得到任何打印的内容。我使用PHP在旋转木马中循环并显示多个图像,并且可以在模式中正确显示单击的图像,但是当单击模式上的打印按钮时,不会发生任何事情,也不会收到错误消息 我的模式代码: <?php $launch_cnt = 0; // Get images again for building modals $media2 = Media::find_by_sql($sql); foreach($media2 as $media2

我按照问题“推特引导:打印模态窗口的内容”的答案,但我还没有得到任何打印的内容。我使用PHP在旋转木马中循环并显示多个图像,并且可以在模式中正确显示单击的图像,但是当单击模式上的打印按钮时,不会发生任何事情,也不会收到错误消息

我的模式代码:

<?php
$launch_cnt = 0;
// Get images again for building modals
$media2 = Media::find_by_sql($sql);
foreach($media2 as $media2): 
    $launch_cnt++;
    $launch = "launch" . $launch_cnt;
        ?> 
        <section id=<?php echo $launch; ?> class="modal hide fade">
          <header class="modal-header">
            <button type="button" class="close" data-dismiss="modal">&times;</button>
          </header>

          <div id="printThis">
            <div class="modal-body">
              <img src="../<?php echo $media2->image_path(); ?>"  />
            </div>
          </div>

          <footer class="modal-footer">
            <button id="btnPrint">Print</button>
            <button class="btn btn-primary" data-dismiss="modal">Close</button>
          </footer>
        </section>
    <?php  
    endforeach;
?>

"  />
印刷品
接近
我已经实现了JS代码和CSS代码,正如在

我已经做了一些测试,问题似乎出在我的Javascript中的某个地方。如果我使用此代码(放在结束标记之前):


警报(“你好,世界!”);
document.getElementById(“btnPrint”).onclick=function(){
printElement(document.getElementById(“printThis”);
window.print();
}
然后弹出“你好,世界!“显示,这基本上告诉我我到了那里。但是,如果我包含名为printElement的必需函数,则不会显示警报弹出窗口,因此根本不会执行JS。包含该函数的完整JS是:

<script>
alert("Hello World!");

document.getElementById("btnPrint").onclick = function() {
  printElement(document.getElementById("printThis"));
  window.print();
}

function printElement(elem) {
    var domClone = elem.cloneNode(true);

    var $printSection = document.getElementById("printSection");

    if (!$printSection) {
        var $printSection = document.createElement("div");
        $printSection.id = "printSection";
        document.body.appendChild($printSection);
    }

    $printSection.appendChild(domClone);
}  ​
</script>

警报(“你好,世界!”);
document.getElementById(“btnPrint”).onclick=function(){
printElement(document.getElementById(“printThis”);
window.print();
}
功能打印元素(elem){
var domClone=elem.cloneNode(真);
var$printSection=document.getElementById(“printSection”);
如果(!$printSection){
var$printSection=document.createElement(“div”);
$printSection.id=“printSection”;
文件.正文.附件(打印部分);
}
$printSection.appendChild(domClone);
}  ​

负责显示打印对话框的部分是:

document.getElementById("btnPrint").onclick = function() {
    window.print();
}
您还可以将html更改为:

 <button id="btnPrint" onclick="window.print()">Print</button>
打印

首先,在声明
$launch
变量后,您误用了一个结束标记。@Adam:没有丢失的?>标记。PHP在声明了带有注释的$launch变量后继续,因此代码在这方面没有问题,但谢谢。然后,您需要在声明
变量之前进行回显>章节
tag@Adam:我不确定我是否明白你的意思……为什么需要echo语句?@Adam:对不起,我现在明白你指的是什么了。我的结束?>标记实际上在那里,但在我将代码复制和粘贴到stackoverflow时被意外删除。Adam:没有丢失?>标记。PHP在用评论,然后继续,所以这没有问题。rsymek@ryzmek:好的,谢谢你的建议。我试过了,结果打印出了一张空白页。所以这是另一个不同的问题。可能是你的CSS不走运。有人有什么想法吗?
 <button id="btnPrint" onclick="window.print()">Print</button>