0

ホケイ、私はすべて1つの静的ページindex.phpで動作するWebサイトを持っています。ページのコンテンツは、URL の変数によって決まります。

  • index.php?site=ホーム
  • index.php?site=フォーラム
  • index.php?site=ニュース

それから私はもう少し長いものをいくつか持っています

  • index.php?site=ニュース&アクション=アーカイブ

現在表示しているページのナビゲーション ボタンの色を変更するスクリプトを作成しようとしています。

私が取り組んでいるスクリプトは、ページの URL を取得し、.search を使用して ? の後のすべてを取得します。次に、文字列を分割して 2 番目の部分 (等号の後の部分) を取得しますが、これは 1 つの変数を持つものに対してのみ機能します。

解析された文字列に複数の「=」が含まれているかどうかを確認する if ステートメントの行に沿って何かを考えていました。最後の文字列の後のテキストを取得するかどうか。そのようなもの- idk私は完全な初心者です。

また、とにかく、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ドキュメントを作成して実行できるのに、なぜjavascriptを使用してURLを確認するの$_GET["site"]ですか? これらの get 変数はサーバー経由で渡されるため、それらを利用する必要があります。

これは、私が話していることをより詳細に説明する PHPのチュートリアルですが、PHP を使用してサーバー経由で変数を渡す方法が 2 つあります。とが$_GETあり$_POSTます。この 2 つの主な違いは、現在 Web サイトに表示されているものです。? の後のすべて URL の は変数を表します。その変数を別の PHP ドキュメントで取得したい場合は、次のようにします。

$variable = $_GET['site'];

あなたが話していた問題の 1 つは、複数の変数を扱う場合でした。PHP では、それは実際には問題ではありません...別の変数に格納するだけです。

$variable2 = $_GET['action'];

そこから対応すればいいと思います。さらにヘルプが必要な場合は、お尋ねください。

于 2012-09-04T23:30:17.530 に答える
0

分割の正確な機能はわかりませんが、2 つのオプションがあります。1) 分割は、最初に「=」を見つけた場所で 1 つの分割のみを行います。2) 分割は、「=」を見つけるたびに文字列を複数の部分に分割します。

それが2番目のオプションであると仮定すると、すべての部分文字列が返された配列が得られます。例: 文字列 "?Variable1=this&variable2=that&variable3=somethingDifferent" があるとします。分割すると、4 つの文字列を含む配列が得られます。

  • 「?変数1」
  • 「これと変数2」
  • 「あれと変数3」
  • "何か違います"

したがって、実際に行う必要があるのは、「&」をセパレータとして分割を実行することです。次に、結果配列内のすべての文字列をループし、「=」をセパレータとして分割します。その結果の配列の最初の文字列はパラメーター (つまり、"variable1"、"variable2") になり、2 番目の文字列はそのパラメーターの値になります。

于 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 に答える