innerHTML在else条件下未更改

innerHTML not changing in else condition

本文关键字:条件下 else innerHTML      更新时间:2024-03-10

请参阅以下代码

<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条件。然而,这不会被执行。新闻标题保持空白。甚至连"最新消息"都不再显示了。

萤火虫不会给我任何错误,所以我不知道这里会发生什么。

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

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

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

坚持W3C标准方法,如appendChildimportNodeinsertBeforereplaceChild

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

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