2011-07-21 13 views
2

私はdiv divを消して、ユーザーが戻ってきても消え去ろうとしています。それは私がしたいことをしていないようです。ボタンを押すと何も起こりません。 localStorageに変化のない偶数値...(そのはそのgetter/setterメソッドの代わりに、直接プロパティへのアクセスを使用することを示唆していても)localStorageため私のlocalStorageコードが機能しないのはなぜですか?

localStorage.done = localStorage.done || false; 
$('#myButton').addEventListener('click', function() { 
    if (!localStorage.done) { 
     localStorage.done = true; 
     $('#myDiv').style.display = "none"; 

    } 
}); 
+0

私はコードを投稿しました.. – 0x499602D2

+0

'localStorage.done = localStorage.done || false' - この表現のポイントは何ですか? –

+0

デフォルト値を – ghayes

答えて

6

あなたのコードは、実際に働いています。

あなたの問題は、このです:

$('#myButton').addEventListener('click', function() { 

jQueryのは、あなただけの唯一の店舗文字列.bind()

localStorage.done = localStorage.done || false; 
    $('#myButton').bind('click', function() { 
     if (!localStorage.done) { 
      localStorage.done = true; 
      $('#myDiv').hide(); 
     } 
    }); 
+0

私が正しく理解していれば、OPはその後の訪問時にDIVが隠れていることを望んでいます。したがって、即座にチェックする必要があります: 'if(localStorage.done){div.hide(); } ' –

+0

' localStorage.done = localStorage.done ||偽; - これは役に立たないのではないですか?それがしているのは、キーが 'undefined 'の場合は' false'にキーをセットすることだけです。 –

+0

私はJQueryを使用していません。私は最初から$関数を作り、ユーザーがボタンを押した後にdivを見えなくするようにしようとしています – 0x499602D2

1

のlocalStorageを呼び出したい.addEventListenerについて知りません。したがって、localStorage.done = falseは "false"にシリアル化されます。次のコードは、(JSFiddleを参照してください)あなたの問題を解決します:

localStorage.done = localStorage.done || "false"; 
document.getElementById('myButton').addEventListener('click', function() { 
    if (localStorage.done == "false") { 
    localStorage.done = "true"; 
    document.getElementById('myDiv').style.display = "none"; 
    } 
}); 

注意を、jQueryを使って混乱を避けるために、私は、標準のDOM "getElementByIdを" を使用しました。また、 "true"と "false"の代わりに "0"と "1"を使うことも考えられます。

この制限はW3 Specificationにはありませんが、現在のブラウザに適用されます。詳細については、this postを参照してください。ハッピーコーディング!

+0

私はJQueryを使用していません。 '$'関数をゼロから作り、ユーザーがボタンを押した後にdivを不可視にすることを試みています – 0x499602D2

+0

私はあなたの問題を今理解しています(localStorageオブジェクトの直列化と関係あります)。あなたの解決策について私の改訂された記事を見てください。楽しい! – ghayes

関連する問題