0

请参阅以下代码

<div id="news-ticker">
<marquee id="news-marquee" scrollamount="3" onmouseover="stop()" onmouseout="start()" style="padding-top:2px; padding-bottom:2px;">
Latest News
</marquee>
</div>

<script type="text/javascript">

var currenturl = document.URL;

if ((currenturl.indexOf("&lang=nl") != -1) || (currenturl.indexOf(";lang=nl") != -1) || (currenturl.indexOf("&lang=nl#content") != -1))  {
document.getElementById("news-marquee").innerHTML = '<?php require_once("news_nl.php"); ?>';
}

else if ((currenturl.indexOf("&lang=en") != -1) || (currenturl.indexOf(";lang=en") != -1) || (currenturl.indexOf("&lang=en#content") != -1))  {
document.getElementById("news-marquee").innerHTML = '<?php require_once("news_en.php"); ?>';
}

else if ((currenturl.indexOf("&lang=fr") != -1) || (currenturl.indexOf(";lang=fr") != -1) || (currenturl.indexOf("&lang=fr#content") != -1)) {
document.getElementById("news-marquee").innerHTML = '<?php require_once("news_fr.php"); ?>';
}

else {
document.getElementById("news-marquee").innerHTML = '<?php require_once("news_nl.php"); ?>';
}

</script>

在 HTML 页面上,我有一个包含选取框的 div,用于在网页上显示最新消息。需要在选取框中显示的内容取自一个 php 文件。这是正在发生的事情:

当页面加载时,我首先看到“最新消息”出现在选框中。也就是说:它在 javascript 执行前不久显示。之后,新闻选框显示正确的内容:如果我在网站的荷兰语 (&lang=nl) 部分,则显示荷兰语新闻项目,在法语网站上显示法语项目等。这样就可以了.

但是有些页面在 URL 上没有“&lang=xx”跟踪,所以在这些情况下,我有默认显示荷兰新闻项目的 else 条件。但是,这不会被执行。新闻选框保持空白。甚至不再显示“最新消息”。

Firebug 不会向我抛出任何错误,所以我不知道这里会发生什么。

4

2 回答 2

2

您的问题是您使用 ofrequire_once而不是include. require_once只允许文件被包含一次。

我建议在 PHP 中进行检查,并且只给客户端一个文件以减少带宽使用。

于 2012-07-27T11:47:45.947 回答
0

不要使用 innerHTML 句点。它是一种专有的 Microsoft JScript 方法,无法正确解析它插入到 DOM 中的代码。在翻译中,当您尝试与通过 innerHTML “插入”的代码进行交互时,它可能对浏览器可见,也可能不可见。

坚持使用 W3C 标准方法,例如appendChild、和.importNodeinsertBeforereplaceChild

如果您需要在文本和代码之间进行转换,请使用new DOMParser()解析文本到代码和new XMLSerializer()解析代码到文本。

此外,您应该坚持在 PHP 中使用单引号,因为双引号用于将变量解释为需要更多资源的文本。我假设包含正在服务器上执行,并且您实际上并不期望那些在客户端执行。

于 2012-07-27T12:06:44.520 回答