2016-11-17 16 views
-1

私はゲームをコーディングしており、いくつかの変数をクッキーで保存する必要があります。私は、ユーザが既にウェブサイトにいて、アカウントを作ったかどうかをチェックするJavascript関数を実行するべき行を追加しました。もしそうでなければ、ユーザ名を尋ねます。しかし、関数を実行するはずの行を追加したときに関数が失敗したので、それを実行しました。 これは私のコードの一部です:Javascriptコードに特定の行を追加すると、HTML関数のonclick関数が削除されます。

<script> 
function setCookie(cname, cvalue, exdays) { 
    var d = new Date(); 
    d.setTime(d.getTime() + (exdays*24*60*60*1000)); 
    var expires = "expires="+ d.toUTCString(); 
    document.cookie = cname + "=" + cvalue + ";" + expires + ";path=/"; 
} 
function checkCookie() { 
    var username=getCookie("username"); 
    if (username!="") { 
     alert("Welcome again " + username); 
    } else { 
     username = prompt("Please enter your username:", ""); 
     if (username != "" && username != null) { 
      setCookie("username", username, 365); 
     } 
    } 
} 
</script> 

<button id="open_market">Market</button> 
<script> 
checkCookie(); 
open_market.onclick = function() { 
    window.open("https://thenumnut.github.io/Wars-of-Shares/Market"); 
} 
</script> 

私は機能を実行するために追加された行は、「checkCookie();」でした。その行を追加した後、idが "open_market"のボタンはクリックされても反応しません。これは、私が "checkCookie();"と言ったときにコードが失敗したり、その前の行でクラッシュしたと思います。 誰かがこのコードで問題を見つけることができたら、私はそれを高く評価します。私のコード全体を見たい場合は、github上のコードへのgithubリンクをコード内で見ることができます。

+0

最初にテストする問題は、使用している関数getCookie()が、指定したコードで定義されていないことです。 – junkfoodjunkie

+0

これは今テストしたところでうまくいきます - github-pageからgetCookie()関数を追加し、 "Market"ボタンをクリックすると正しいページが開きます。だから問題はあなたがここに投稿したコードにはない、と私は思う。 – junkfoodjunkie

答えて

1

を、それを投稿し、私はあなたのgetCookie()関数を追加し、それとは別に、単にタグの周りにHTMLのビットを追加し、ここではコードです:

<!DOCTYPE html> <html> <head> <script> function getCookie(cname) { 
    var name = cname + "="; 
    var ca = document.cookie.split(';'); 
    for(var i = 0; i <ca.length; i++) { 
     var c = ca[i]; 
     while (c.charAt(0)==' ') { 
      c = c.substring(1); 
     } 
     if (c.indexOf(name) == 0) { 
      return c.substring(name.length,c.length); 
     } 
    } 
    return ""; } 

function setCookie(cname, cvalue, exdays) { 
    var d = new Date(); 
    d.setTime(d.getTime() + (exdays*24*60*60*1000)); 
    var expires = "expires="+ d.toUTCString(); 
    document.cookie = cname + "=" + cvalue + ";" + expires + ";path=/"; } function checkCookie() { 
    var username=getCookie("username"); 
    if (username!="") { 
     alert("Welcome again " + username); 
    } else { 
     username = prompt("Please enter your username:", ""); 
     if (username != "" && username != null) { 
      setCookie("username", username, 365); 
     } 
    } } </script> </head> <body> <button id="open_market">Market</button> <script> checkCookie(); open_market.onclick = function() { window.open("https://thenumnut.github.io/Wars-of-Shares/Market"); } </script> </body> </html> 

それは、ブラウザの開発ツールを開き、細かい

+0

ありがとうございました。それは今、完璧に動作します。私はかなりコピーして貼り付けていたので、私が持っていたものと追加しなかったものを混乱させる必要がありました。 – Elodin

0

JavaScriptでは、これは多くの場合、checkCookie();にバグがあることを示す記号です。一見すると表示されませんが、ブラウザはコンソールにバグを表示する必要があります。

ページのどこかを右クリックして[Inspect Element]を選択すると、ほとんどのブラウザ(Firefox、IEなど)でコンソールを開くことができます。ここで、Console Consoleに移動します。

エラーメッセージを理解していない場合は、ちょうどここ

+0

私はGithubを通してそれを実行していました。つまり、エラーメッセージは表示されません。また、モバイルでSafariを使用しているため、要素を検査できません。 – Elodin

+1

Githubは、ブラウザの開発者ツールが機能しないようにしません。モバイル上のSafariは、あなたが開発者用ツールを使用するのを妨げていません(https://blog.idrsolutions.com/2015/02/remote-debugging-ios-safari-on-os-x-windows-and-linux/) 。たとえそれがあったとしても、別のブラウザで問題をテストすることはできません。 – Quentin

0

を動作しているようです。 エラーメッセージを読む

checkCookie();は、var username=getCookie("username");の機能を呼び出します。

getCookie関数を定義していないため、例外をスローして実行を停止します。

関連する問題