从php获取数据,直接发送到javascript并使用比较运算符和数据

时间:2016-06-07 05:30:53

标签: javascript php jquery html operators

在这种情况下,我们需要这样做......

我在屏幕左侧有一个菜单栏,用于加载默认的初始"位置",无论菜单设置为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>

2 个答案:

答案 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:

填充polyfill
if (!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);

......做更多功能......