我在php中有一个foreach循环。现在我需要分别为每条记录打印div的内容,我现在的内容如下:
<script type="text/javascript">
function printContent(div_id) {
var DocumentContainer = document.getElementById("<?php echo $route->flightnum;?>");
var html = '<html><head>' +
'</head><body style="background:#ffffff;">' + DocumentContainer.innerHTML +
'</body></html>';
var WindowObject = window.open("", "PrintWindow", "width=1000,height=1000,top=0,left=0,toolbars=no,scrollbars=yes,status=no,resizable=yes");
WindowObject.document.writeln(html);
WindowObject.document.close();
WindowObject.focus();
WindowObject.print();
//WindowObject.close();
document.getElementById('print_link').style.display = 'block';
}
</script>
然后我有以下div:
<div id="brief_print" style="margin-left: 15px">
.
.
.
.
.
</div>
也许这样的链接:
<a class="glow" style="text-decoration: underline;" href="javascript:printContent('<?php echo $route->flightnum;?>')"id='print_link'>Open in new window for printing</a>
我的问题是,当我点击链接时,我得不到任何回报。请告诉我我哪里错了。 感谢
整个代码:
<?php
foreach($allroutes as $route)
{
?>
<tr>
<td onclick="$('#details_<?php echo $route->flightnum;?>').toggle('slow')">P</td>
<td style="padding:5px 10px" ALIGN="center"><?php echo $route->depicao;?></td>
<td style="padding:5px 10px" ALIGN="center"><?php echo $route->arricao;?></td>
<td style="padding:5px 10px" ALIGN="center"><?php echo $route->aircraft; ?></td>
<td style="padding:5px 10px"ALIGN="center"><?php echo $route->distance;?></td>
</tr>
<tr >
<td colspan="14"><div align="center">
<table cellspacing="0" width="100%" id="details_<?php echo $route->flightnum;?>" style="display:none">
<tr><th style="padding:5px 10px"><div align="center">Flight Details</div></th></tr>
<tr><td>
<section>
<?php
if(!isset($_GET['newwindow']))
{
?>
<a class="glow" style="text-decoration: underline;" href="javascript:printContent('<?php echo $route->flightnum;?>')"id='print_link'>Open in new window for printing</a>
<script type="text/javascript">
function printContent(div_id)
{
var DocumentContainer = document.getElementById("<?php echo $route->flightnum;?>");
var html = '<html><head>'+'</head><body style="background:#ffffff;">'+ DocumentContainer.innerHTML+ '</body></html>';
var WindowObject = window.open("", "PrintWindow","width=1000,height=1000,top=0,left=0,toolbars=no,scrollbars=yes,status=no,resizable=yes");
WindowObject.document.writeln(html);
WindowObject.document.close();
WindowObject.focus();
WindowObject.print();
//WindowObject.close();
document.getElementById('print_link').style.display='block';
}
</script>
<?php
}
?>
<div id="brief_print" style="margin-left: 15px">
<pre>
<b>Departing</b> : <?php echo $schedule->depname ?>
<b>Arriving</b> : <?php echo $schedule->arrname ?>
<b>Equipment</b> : <?php echo $schedule->fullname;?>
<b>Alternate</b> : <?php echo $alternate1; ?>
<b>Alternate</b> : <?php echo $alternate2; ?>
<b>Alternate</b> : <?php echo $alternate3; ?>
</pre>
</div>
</section>
</td></tr>
</table>
</div>
<?php
}
?>
答案 0 :(得分:0)
您的代码存在一些大问题。你好像不明白时间和地点发生了什么。让我试着解释一下。
当客户访问网站时,他们的浏览器会向您的托管服务器发送页面请求。您的主机服务器执行PHP代码,生成要发送到客户端浏览器的页面的源代码。因此,在PHP 完全执行之后,页面才会被发送回客户端的浏览器。此时尚未执行任何JavaScript代码。
一旦页面被发送到浏览器(并且PHP 完成),那就是JavaScript接管时的情况。 JavaScript在客户端执行。
所以,一旦你理解了这一点,你就会意识到你显然无法在不向服务器发出新请求的情况下从JavaScript调用PHP。
尝试在浏览器中打开您的页面并查看来源。您将看到为每个循环迭代定义一次JS函数printContent()
。您还缺少第二个<tr>
和<td>
代码的结束标记(在上一个</td></tr>
之后添加额外的</div>
)。当您查看源代码以查看PHP代码生成的内容时,您可能会意识到所有其他问题。