多个document.write无法正常工作

时间:2014-11-26 15:29:36

标签: php html

我有一个名为load.php的远程脚本,使用参数id调用。然后,会将id附加到多个链接,并在名为display.html的页面上显示它们(调用load.php)。

但是, display.html仅显示第一个链接,并且缺少所有其他链接。

display.html的代码

<head>
<script type="text/javascript" src="http://example.come/load.php?id=1"></script>
</head>

load.php的代码

<?php
$pid = "-1";
if (isset($_GET['id'])) {
  $pid = $_GET['id'];
}
?>
var firstlink='<a href="http://www.example.com/loader.html?parameter=<?php echo $pid?>"><img src="firstimage.jpg" alt="First Link!" width="150" height="125" border="0"></a><br/><br/>';
document.write(firstlink);

var secondlink='<a href="http://www.example.com/loader2.html?parameter=<?php echo $pid?>"><img src="secondimage.jpg" alt="Second Link!" width="150" height="125" border="0"></a><br/><br/>';
document.write(secondlink);

var thirdlink='<a href="http://www.example.com/loader3.html?parameter=<?php echo $pid?>"><img src="thirdimage.jpg" alt="Third Link!" width="150" height="125" border="0"></a><br/><br/>';
document.write(thirdlink);
编辑:在所有3个装载机中意外地给出了相同的链接。它们是3个不同的链接。

2 个答案:

答案 0 :(得分:2)

你应该使用document.write!有更好的工具。

你应该做的是使用appendChildinsertAdjacentHTML,或者只是简单地写.innerHTML来添加你的元素 - 等待DOM准备就绪后,即。 / p>

这是解决此问题的简单方法:

<?php
$pid = "-1";
if (isset($_GET['id'])) {
  $pid = $_GET['id'];
}
?>
window.addEventListener('load', function(){
    var firstlink='<a href="http://www.example.com/loader.html?parameter=<?php echo $pid?>"><img src="firstimage.jpg" alt="First Link!" width="150" height="125" border="0"></a><br/><br/>';
    window.document.body.innerHTML += firstlink;


    var secondlink='<a href="http://www.example.com/loader.html?parameter=<?php echo $pid?>"><img src="secondimage.jpg" alt="Second Link!" width="150" height="125" border="0"></a><br/><br/>';
    window.document.body.innerHTML += secondlink;


    var thirdlink='<a href="http://www.example.com/loader.html?parameter=<?php echo $pid?>"><img src="thirdimage.jpg" alt="Third Link!" width="150" height="125" border="0"></a><br/><br/>';
    window.document.body.innerHTML += thirdlink;
});

答案 1 :(得分:0)

在第一个document.write()之后,网页的整个内容都会被覆盖并且脚本会被中止。

使用以下内容:

var firstlink='<a href="http://www.example.com/loader.html?parameter=<?php echo $pid?>"><img src="firstimage.jpg" alt="First Link!" width="150" height="125" border="0"></a><br/><br/>';


var secondlink='<a href="http://www.example.com/loader.html?parameter=<?php echo $pid?>"><img src="secondimage.jpg" alt="Second Link!" width="150" height="125" border="0"></a><br/><br/>';


var thirdlink='<a href="http://www.example.com/loader.html?parameter=<?php echo $pid?>"><img src="thirdimage.jpg" alt="Third Link!" width="150" height="125" border="0"></a><br/><br/>';

document.write(firstlink + secondlink + thirdlink);