3

私はHTML(およびプログラミング全般)に比較的慣れていないので、ページに移動するときに変数を宣言して値を割り当てようとしています。私が持っているのは、次のようなコード行です。

function() navigate {window.location = "myPage.html?myVar=1";}

関数を実行すると、新しいページが読み込まれますが、変数にアクセスしようとすると、変数が未定義であるというエラーが表示されます。ただし、たとえば<script>var myVar;</script>、新しいページで変数を定義すると、前に使用したナビゲート関数で設定しようとした値ではなく、値がnullに設定されます。

私はこれに対する解決策を考えることができず、私のエラーはおそらくURLの最後のがどのように機能するかについての私の誤解に起因します?が、どこでもそれがどのように機能するかについての良い説明を見つけることができません。

4

3 に答える 3

1

クエリ文字列変数は、ページをリクエストしたときにサーバーにデータを渡すことを目的としていますが、JavaScriptを使用してデータにアクセスすることもできます。このスタックオーバーフローの質問を確認してください。JavaScriptでクエリ文字列の値を取得するにはどうすればよいですか?

于 2013-02-02T21:06:31.360 に答える
0

関数が正しく記述されていません。javascriptコンソールにエラーがないか確認してください。javascriptで関数を書く方法の例を次に示します。

    var navigate = function() { window.location = "myPage.html?myVar=1"; }

また

    function navigate() { window.location = "myPage.html?myVar=1"; }

注意点ですが、名前navigateは一般的すぎます。のような名前を付けますnavigateToMyPage

質問を読み直して、URLからパラメータを取得する方法を探していることに気づきました。

あなたはこのようなことをしたいと思うでしょう:

    var navigateToMyPage = function() { window.location = "myPage.html?" + location.search; }

関連する質問と解決策は次のとおり です。GETパラメータから値を取得するにはどうすればよいですか。

また

javascript変数値を渡したい場合は、次のようにすることができます。

    var myVar = 1 + 1;
    var navigateToMyPage = function() { window.location = "myPage.html?myVar=" + myVar; }

幸運を!

于 2013-02-02T21:06:18.937 に答える
0

クエリ文字列-クライアント側とサーバー側

クエリ文字列は、クライアント側のスクリプト言語であるJavascriptによって変数に自動的に処理されません。これは通常、PHPなどのサーバーサイドスクリプト言語によって行われます。

たとえば、PHPのサーバー側では、通常、クエリ文字列の値が$_GET配列に自動的に割り当てられます$_GET['myVar']。この場合は、この場合は割り当てられます。ただし、Javascriptではそうではなく、クエリ文字列を自分で処理する必要があります。

フラグメント識別子-URL値をJavascriptに渡す

Javascriptでは、URLを介して値を渡す最も一般的な方法は、実際には、クエリ文字列ではなくフラグメント識別子を使用することです。

たとえば、次のように2つの変数を渡すことができます。

myPage.html#myVar=1&myOtherVar=2

JavaScriptでは、location.hash変数に値が自動的に割り当てられ、次の#myVar=1&myOtherVar=2ようにさらに処理できます。

var location_vars = [];
var location_vars_temp = location.hash.replace('#',''); // Remove the hash sign
location_vars_temp     = location_vars_temp.split('&'); // Break down to key-value pairs
for (i=0; i < location_vars_temp.length; i++) {
    location_var_key_val = location_vars_temp[i].split('='); // Break down each pair
    location_vars[location_var_key_val[0]] = location_var_key_val[1];
}

この時点で、渡された値が入力された配列になり、とでlocation_varsそれらを参照できるようになります。location_vars['myVar']location_vars['myOtherVar']

于 2013-02-02T21:21:32.627 に答える