在这种情况下,我们需要这样做......
我在屏幕左侧有一个菜单栏,用于加载默认的初始"位置",无论菜单设置为1加载页面打开,无论设置为0加载页面关闭。
这个网站使用子主题,几乎就是这样:
示例:" http://localhost/?subtopic=latestnews"。
所有子主题都在主题(菜单)之间划分。
我尝试使用此菜单执行的操作是:获取页面以识别当前的子主题页面,获取主题以及加载页面时,只打开该菜单
示例:菜单|新闻......... |支撑
........副题.... |办事指南。|联系我们
当我打开最新新闻页面时,只打开菜单新闻加载,当我打开联系人时,只打开支持菜单。
我已经有一个函数从任何加载的子主题返回主题值,我能够将它发送到javascript和alert()
它已经,但是当我在javascript中使用比较运算符时更改默认值(1:0)它始终返回0,无论如何。
OBS。:当我在没有操作符的情况下手动编辑值(1:0)时,菜单正常工作。
以下是JavaScript部分:
function InitializePage() {
LoadMenu();
}
function LoadMenu() {
document.getElementById("submenu_" + activeSubmenuItem).style.color = "white";
document.getElementById("ActiveSubmenuItemIcon_" + activeSubmenuItem).style.visibility = "visible";
var news, aboutgatia, gameguides, library, community, events, forum, account, support, shop;
var div = document.getElementById("topic_finder"); //here is the div with the topic name to compare
var myData = div.textContent;
if (self.name.lastIndexOf("&") == -1) {
news = ((myData == "news") ? 1 : 0); //Here the comparison operator that is not working and I can't figure out why
aboutgatia = 0;
gameguides = 0;
library = 0;
community = 0;
events = 0;
forum = 0;
account = 0;
support = 0;
shop = 0;
alert(myData);
self.name = "news=" + news + "&aboutgatia=" + aboutgatia + "&gameguides=" + gameguides + "&library=" + library + "&community=" + community + "&events=" + events + "&forum=" + forum + "&account=" + account + "&support=" + support + "&shop=" + shop + "&";
}
FillMenuArray();
InitializeMenu();
}
这是PHP / HTML部分:
<script type="text/javascript">InitializePage();</script></div>
<div id="topic_finder" style="display: none;">
<?php
$topic_output = getTopic($subtopic); //Here is that function I mentioned before
echo htmlspecialchars($topic_output);
?>
</div>
答案 0 :(得分:1)
由于您实际上没有显示字符串,为什么不这样做呢
news = "<?php echo htmlspecialchars($topic_output); ?>" == "news";
或
document.getElementById("submenu_<?php echo htmlspecialchars($topic_output); ?>")....
您当前的代码在浏览器中将如下所示
<div id="topic_finder" style="display: none;">
whitepace news whitespace
</div>
所以var myData = div.textContent;
不会返回&#34;新闻&#34;别的东西。尝试trim删除前导和尾随空格
var myData = div.textContent.trim();
和控制台记录它以查看它是否符合您的预期 - 那么这也可以使用
news = myData == "news"
没有三元
注意.trim()需要为IE&lt; 9:
填充polyfillif (!String.prototype.trim) {
String.prototype.trim = function () {
return this.replace(/^[\s\uFEFF\xA0]+|[\s\uFEFF\xA0]+$/g, '');
};
}
答案 1 :(得分:-1)
只需将您的输入解析为正确的格式,在这里您要与字符串进行比较,因此请在代码中添加以下行。
var div = document.getElementById("topic_finder");
var myData = div.textContent;
myData = String(myData);
......做更多功能......