7

サーバー側の通信を使用せずにjavascriptでhtmlページを作成するクラスプロジェクトがあります.1つ目は、ユーザーが特別に数字を入力することです。最初のページで、講師は自分のクラスに関する情報と生徒数を入力する必要があります。完了したら、[次へ] をクリックすると、新しいページが開き、各生徒の情報と成績を尋ねられます。ただし、1 ページ目から 2 ページ目に変更すると、生徒数の変数が不定になります。このパーツを使っています

var  snum;

function savesnum(val){
snum =val;}

また、試してみましたが、

var snum;
function savesnum(){
snum = document.getElementById('stunb').value; }
4

4 に答える 4

19

これは、 window.localStorageを使用して、同じドメインで提供されている 2 つの html ページ間でデータを渡す例です。Same-origin policyのため、これは異なるドメイン間では機能しません。

この例は、 jsfiddle.netでホストされている 2 つのページで構成されていますが、ローカル ファイル システムからこれらのファイルを簡単に提供することもできます。いずれにせよ、この例にはサーバー側の通信は含まれていません。

最初のページでは、ユーザーはtextarea要素にテキストを入力できます。クリックすると、保存ハンドラ (addEventListener の 2 番目の属性として指定された無名関数) を実行するクリック イベントが発生する保存ボタンがあります。このボタンは、ユーザーが入力したテキストを取得し、キーを使用して localStorage に保存します。mySharedData

jsfiddle のページ 1

HTML

<textarea id="input"></textarea>
<div>
    <button id="save">Save</button>
</div>

Javascript

/*jslint sub: true, maxerr: 50, indent: 4, browser: true */

(function (global) {
    document.getElementById("save").addEventListener("click", function () {
        global.localStorage.setItem("mySharedData", document.getElementById("output").value);
    }, false);
}(window));

mySharedData2 ページ目は、localStorage にあるキーから保存されたテキストを呼び出し、テキストエリアに表示します。

jsfiddle のページ 2

HTML

<textarea id="output"></textarea>

Javascript

/*jslint sub: true, maxerr: 50, indent: 4, browser: true */

(function (global) {
    document.getElementById("output").value = global.localStorage.getItem("mySharedData");
}(window));

両方の例は、すぐに実行される無名クロージャーにラップされており、そこにwindow オブジェクトを渡します。このクロージャーは、変数global.

最後に、最初の行はコメントですが、古いコメントではありません。これはjslintで使用される命令です。JavaScript のソース コードが Douglas Crockford によって定められたコーディング規約に準拠しているかどうかをチェックするために JavaScript ソフトウェア開発で使用される静的コード分析ツール。

代替手段は次を使用することです:

cookies、もう一度、Same-origin ポリシーが適用されます。

また

次のページに移動する際に使用されるアドレスの一部となるURLクエリ文字列。Javascript で読み取ってデータを取得できます。

于 2013-04-28T15:41:00.153 に答える
1

Cookie の使用を検討してください。

http://www.w3schools.com/js/js_cookies.asp

Cookie は、訪問者のコンピューターに保存される変数です。同じコンピューターがブラウザーでページを要求するたびに、Cookie も送信されます。JavaScript を使用すると、Cookie 値の作成と取得の両方を行うことができます。

function savesnum(val) {
    document.cookie = 'snum:'+val; //Set the cookie
}

function getsnum() {
    var start = document.cookie.indexOf('snum:'); //Get the location of the cookie value
    var stop = document.cookie.indexOf(';'); //Get the end of the cookie value

    return document.cookie.substring(start+5, stop); //Return the value of the cookie (+5 because 'snum:' is 5 chars long)
}
于 2013-04-28T15:40:21.613 に答える
0

新しいページをウィンドウで開いたり、新しいページにリダイレクトしたりすると、新しいウィンドウ オブジェクトが表示されます。最初のウィンドウ オブジェクトでグローバル変数として定義されている「snum」を取得できません。

この場合、snum を「get」パラメータとして URL だけで渡し、新しいウィンドウでパラメータを取得できます。

于 2013-04-28T15:16:28.297 に答える