8

Phonegap + jQuery Mobile と HTML5 を勉強し始めたばかりなので、私のばかげたことに神経質になるな!

これが機能しない理由を誰かに教えてもらえますか? localStorage の変数を使用している場合、ボタンを押すと空の画面が表示されますが、変数 temperature="100" を使用すると正常に動作します。アンドロイド 4.1。

<script type="text/javascript" charset="utf-8">
document.addEventListener("deviceready", onDeviceReady, false);
function onDeviceReady() {
  window.localStorage.setItem("temperature", "100");
  var temperature = window.localStorage.getItem("temperature");
}
</script>
<div data-role="content">
  <p>Working or not?</p>
  <button onclick="myFunction()">Try it</button>
  <p id="testi"></p>
<script type="text/javascript">
  function myFunction() {
    //var temperature = "100";----> This is working!
    document.getElementById("testi").innerHTML = temperature;
  }
 </script>
</div>

別の質問: Windows Phone でページ間の変数を処理するにはどうすればよいですか? それらは localStorage をサポートしていないので、db 接続がない場合にこれを処理する別の方法はありますか?

ありがとう!

サーミ語

4

1 に答える 1

16

temperature関数のスコープに対してローカルonDeviceReadyです。つまり、機能が終了すると、それはなくなります。

次の 2 つのオプションがあります。

// Make it global
var temperature;
document.addEventListener("deviceready", onDeviceReady, false);
function onDeviceReady() {
  window.localStorage.setItem("temperature", "100");
  temperature = window.localStorage.getItem("temperature");
}

また:

// Retrieve it in myFunction
function myFunction() {
  var temperature = localStorage.getItem("temperature");
  document.getElementById("testi").innerHTML = temperature;
}

関数スコープの例の良いリストについては、この回答を試してください。

于 2012-07-15T10:13:59.183 に答える