2017-03-21 3 views
0

これはなぜ機能しないのですか?( "#name")のテキストを取り、ボタンをクリックすると別のHTMLページを書く必要があります。他のページを開くと「username」は定義されていないと言われていますが、どうすれば値を渡すことができますか?なぜ私のvarが定義されていないと言われますか

username = []; 

$("#main_page").ready(function() { 
    $("#name").focus(); 

    $("#name").keydown(function(e) { 
    if (e.which === 13) { 
     console.log("ok"); 
     $('#login').click(); 
    } 
    }); 

    $("#login").click(function() { 
    username[0] = $("#name").val(); 
    console.log(username); 
    window.location.replace("chat"); 
    }); 
}); 

$("#chat").ready(function(){ 
    console.log(username[0] + " recived"); 
    $("#username_title").append(username[0]); 
}); 

$('#chat').readyを使用するのは間違っていますか? main_pageにもコードが入っているので実行します。私が使用.readyのために体にIDを与えたが、私はそれがすべてのページのロードとページアン

について

+7

これはJSコードの仕組みではありません。これは単一のページ(現在ロードされているページ)でしか動作しないため、実行しようとしているときにメモリ内の変数を送信することはできません。代わりに、クエリ文字列の値を渡すか、localStorageまたはクッキーに保存し、次のページが読み込まれた後にそれらを取得する必要があります。 –

+0

変数を宣言するためにvar、letまたはconstを使用してください – baao

+0

@RoryMcCrossan oh ... ok(あなたは私を悲しませます) –

答えて

0

クッキーに「username」を入れ、次のページ「chat」のクッキーから「username」を得ることができます。また、cookieの代わりにlocalStorageまたはsessionStorageを使用することもできます。

+0

ええ、私はlocalStorageを使いました。 –

0

その変数のスコープはすぐ内側で間違っていると思う2つのファイル、HTMLで

これらのイベントは、その前または後にjq jsやWebコード(クライアント側)が動作しないことを意味します。

ページをリロードした後でも、コードを書き込んでも動作することを意味します。クエリー文字列としてユーザー名を渡して、ページが再ロードされた後にフェッチする

関連する問題