2

アプリで使用できるかどうかを確認するために localStorage をテストしていますが、テキスト入力ボックスからデータを保存しようとすると、画面が空白になります。どうすればこれを修正できますか? コードは次のとおりです。

<html>
<head>
<script type="text/javascript">
function write() {
localStorage.setItem('item',  document.getElementById('input').value);
}

function read() {
var data = localStorage.getItem('item');
document.getElementById('display').innerHTML = data;
}
</script>
</head>
<body>
<input id="input" type="text" />
<button type="button" onclick="write()">
Write
</button>
<p id="display">
Display
</p>
<button type="button" onclick="read()">
Read
</button>
</body>
</html>
4

3 に答える 3

3

関数名を からwrite別のものに変更します。誤って を呼び出しているように聞こえdocument.writeます。これにより、ページ全体が空白になります。

于 2012-07-26T16:23:17.703 に答える
2

writeグローバル ( document) 名前空間で呼び出された関数を使用することはできません...別の名前を付ければ正常に動作します

<input id="input" type="text" />
<button type="button" onclick="somethingelse();">
Write
</button>
<p id="display1">
Display
</p>
<button type="button" onclick="read()">
Read
</button>​

function somethingelse() {
    localStorage.setItem('item', document.getElementById('input').value);
}

function read() {
    var data = localStorage.getItem('item');
    document.getElementById('display1').innerHTML = data;
}​

作業例はこちら

于 2012-07-26T16:23:16.207 に答える
1

HTML イベント ハンドラー内のコードは、次のように効果的に実行されます。

with(document) {
    with(this) {
        write();
    }
}

あなたwriteはシャドウされています(それは を呼び出しますdocument.write)。次のコマンドを使用して、正しい書き込みを簡単に参照できますwindow.write()

<button type="button" onclick="window.write()">

最終的には、インライン html イベントをまったく使用しない方がよいでしょう。要素への参照button.onclick = writeである場所は単純なものでした。button

于 2012-07-26T16:34:50.067 に答える