6

セッション ストレージを使用して、数値または を取得できるキーを設定しますnull。入力した値に関係なく、フィールドが文字列として格納されていることに気付きました。格納された値を に戻す良い方法はありnullますか?

たとえば、コードを次のようにチェックしたいとします。

if (!sessionStorage.getItem('key')) {
   // do something
}

そのチェックを行う最良の方法は何ですか?明らかな方法は

 if (!sessionStorage.getItem('key') !== "null") {
       // do something
 }

代替案があるかどうか疑問に思っています。

4

5 に答える 5

2

ストレージに書き込む前に、値を JSON としてシリアル化します。

var json = JSON.stringify(val);

次に、再度読み取るときに解析します。

try {
  var val = JSON.parse(storage.item);
} catch(ex) {
  // handle errors
}

パーサーを try ブロックでラップすることが重要です。JSON.parse('undefined')ユーザーまたはブラウザーがセッション ストレージをクリアした場合、エラーをスローしようとすることになります。

于 2016-03-10T21:33:41.347 に答える
2

false と評価されるものが欲しいだけです

代わりに空の文字列を使用して、設定されていない値をマークできます。

sessionStorage.setItem('key','');

このようにして、現在のチェックを再利用できます。

if (!sessionStorage.getItem('key')) {
   // do something
}

そうは言っても、値を選択するためのドロップダウンがあると述べたので、そのような値が必要ですが、null値の項目を削除することを含む解決策がより良いと思います. これが実際のデモと、それを作成するために使用されたコードです。

var dd = document.getElementById('dropdown');

dd.addEventListener('change', function(){
  var value = this.value;
  if (value === 'null')
    sessionStorage.removeItem('key');
  else sessionStorage.setItem('key', value);
});

var check = document.getElementById('check');
check.addEventListener('click', function(){
    this.innerHTML = 'Value: '+sessionStorage.getItem('key')+
                     ', check: '+(!sessionStorage.getItem('key'));
});
<select id="dropdown">
  <option value="null">none</option>
  <option>1</option>
  <option>2</option>
  <option>3</option>
  <option>4</option>
  <option>5</option>
</select>

<button id="check">Check value</button>
于 2016-03-10T21:35:20.893 に答える
-1

返されるステートメントは文字列であるため、次のように言うことができますif(!sessionStorage.setItem('key','')) {}

于 2016-03-10T21:33:39.527 に答える