0

好吧,所以我有一个网站,这一切都在一个静态页面 index.php 上工作。页面上的内容由 URL 中的变量决定。

  • index.php?site=home
  • index.php?site=论坛
  • index.php?site=news

然后我有一些更长的

  • index.php?site=news&action=archive

我正在尝试制作一个脚本来更改我当前所在页面的导航按钮的颜色。

我正在处理的脚本获取页面的 url,使用 .search 来抓取 ? 之后的所有内容。然后我将字符串拆分并抓取第二部分(等号之后的部分),但这仅适用于具有 1 个变量的部分。

我在想一些类似 if 语句的东西,检查解析的字符串中是否有多个“=”,以及它是否确实在最后一个之后抓取了文本。类似的东西——我是个菜鸟。

另外,无论如何我可以在头部使用javascript setAttribute,还是需要在声明ID/类之后?

<html>
<head>
<title>Test</title>
<style type="text/css">
.test {
color: yellow;
font-size: 5em;
}
</style>
<script type="text/javascript">
function parseUrl(url) {
    var a = document.createElement('a');
    a.href = url;
    return a;
}

var page=parseUrl('').search;
var site=page.split("=")[1];

</script>
</head>
<body>
<ul>
<li id ="nav_home"><a href="testtest.html?site=home">Home</a>
<li id ="nav_forum"><a href="testtest.html?site=forum"/>Forum</a>
<li id ="nav_help"><a href="testtest.html?site=help"/>Help</a>
<li id ="nav_roster"><a href="testtest.html?site=roster"/>Roster<a/>
<li id ="nav_news"><a href="testtest.html?site=news"/>News<a/>
<li id ="nav_archive"><a href="testtest.html?site=news&action=archive"/>Archive<a/>
<script type="text/javascript">
document.getElementById("nav_" + site).setAttribute("class", "test");
</script>
</body>
</html>
4

4 回答 4

1

只是想回顾一下备受赞誉的解决方案: -- 如何在 JavaScript 中获取查询字符串值?

您可能很快就想开始使用 jQuery。少跨浏览器问题,多做,少写。

最后,将脚本放在结束 body 标记之前被认为是一种很好的做法。你可以考虑一下。-- 页面中脚本标记的位置如何影响其中定义的 JavaScript 函数?

于 2012-09-04T23:31:54.067 回答
0

当您可以只制作 PHP 文档并执行$_GET["site"]. 这些 get 变量是通过服务器传递的,您应该利用它们。

这是一个关于 PHP 的教程,更深入地解释了我所说的内容,但只是为了让您了解有两种不同的方法可以使用 PHP 通过服务器传递变量。有$_GET$_POST。两者之间的主要区别在于您现在在网站上看到的内容。之后的一切?在 URL 中代表一个变量。如果您想在另一个 PHP 文档中获取该变量,您只需执行以下操作:

$variable = $_GET['site'];

您谈论的问题之一是当您处理多个变量时。那么使用 PHP 这不是一个真正的问题......你只需将它存储在一个不同的变量中。

$variable2 = $_GET['action'];

我认为你应该能够从那里处理它。如果您需要更多帮助,请询问。

于 2012-09-04T23:30:17.530 回答
0

不知道拆分的确切功能,但有两种选择:1)拆分只进行一次拆分,在它第一次找到“=”的地方。2)split 将字符串拆分为多个部分,每次它找到一个“=”。

假设它是第二个选项,那么您将得到一个包含所有子字符串的数组。示例:假设您有字符串“?Variable1=this&variable2=that&variable3=somethingDifferent”。如果拆分,您将得到一个包含 4 个字符串的数组:

  • “?变量1”
  • “这个&变量2”
  • “那个&变量3”
  • “有些不同”

所以你真正应该做的是使用“&”作为分隔符进行拆分。然后,遍历结果数组中的所有字符串并以“=”作为分隔符进行拆分。该结果数组的第一个字符串将是您的参数(即“variable1”、“variable2”),第二个字符串是该参数的值。

于 2012-09-04T23:30:47.063 回答
0

我以前使用过这个脚本来获取 URL 中的变量。(这是jquery)

    $.extend({
    getUrlVars: function(){
        var vars = [], hash;
        var hashes = window.location.href.slice(window.location.href.indexOf('?') + 1).split('&');
        for(var i = 0; i < hashes.length; i++)
        {
          hash = hashes[i].split('=');
          vars.push(hash[0]);
          vars[hash[0]] = hash[1];
        }
        return vars;
      },
    getUrlVar: function(name){
    return $.getUrlVars()[name];
  } 
});
var site = $.getUrlVar('site');
var news = $.getUrlVar('news');

我在 stackoverflow 和http://www.backbonetechnology.com/blog/jquery/jquery-get-url-variables上看到了这个脚本

在头部设置属性应该没有任何问题。只需使用选择器。

document.getElementById("nav_" + site).css("class", "test");
于 2012-09-04T23:32:01.717 回答