1

パスファインダーキャラクタージェネレーターを更新して、HTML5のWebストレージを使用してキャラクターを保存できるようにしようとしています。キャラクターの生成に使用するJavaScriptファイルがあります。

しかし、私はいくつかの問題に直面しています。[キャラクターの更新]ボタンをクリックしたときに、更新されたものだけが変更されるようにするにはどうすればよいですか?第二に、結果を表示するための最善の方法は何でしょうか?

これは私の現在のコードです:

function SaveCharacter() {
    makeCharacter();
    if (typeof(Storage) !== "undefined") {
        if (localStorage.used) {
            alert("used was true.");
            localStorage.name = name;
        }
        else {
            localStorage.used = true;
            localStorage.name = name;
            localStorage.skill_points = num_skill_points;
            localStorage.spells = num_spells;
            localStorage.feats = num_feats;
            localStorage.hitdie = hit_die;
            localStorage.wealth = wealth;
            localStorage.Class = Class;
         // localStorage.Scores = new Array();
         // for (var i = 0; i < n; i++) {
         //         localStorage.Scores[i] = ability_scores[i];
         //         }
            }
            document.getElementById("result").innerHTML="Character Name: " + localStorage.name;
        }
        else {
            document.getElementById("result").innerHTML = "Sorry, your browser does not support web storage...";
    }
}

function DeleteCharacter() {
        localStorage.clear();
}

これを操作すると、キャラクターを削除したかどうかに関係なく、名前が変更されます。また、document.getElementById("result").innerHTML="Character Name: " + localStorage.name;一度に複数のフィールドを更新することはできません。これを行うためのより良い方法は何でしょうか?

[編集]-ジェネレーターへのリンクは次のとおりです。

4

1 に答える 1

2

最初にあなたがしたことについてのいくつかの考え:

  1. typeof(Storage) !== "undefined"localStorageがサポートされているかどうかを知る代わりに、Modernizrライブラリを使用することをお勧めします。それははるかに堅牢になります。
  2. 一連の変数を処理する代わりに、Characterオブジェクトのようなものを作成する必要があります。これは、を使用してlocalStorageに保存され、を使用しJSON.stringify()て取得されますJSON.parse()。また、コードがはるかに読みやすくなります。
  3. 'Class'のような変数名は使用しないでください。エラーが発生しやすくなります。代わりに、「category」や「type」などを使用してください。

あなたのページを見ると、次のエラーが発生します:「フォームが定義されていません」。したがって、makeCharacter()関数は機能しません。

結果の表示に関する質問については、「result」div内でさらに多くの情報を生成できます。1つのテキストに制限されていません。
データを簡単に表示できるように、「result」要素を設定するのがより良いオプションだと思います。例えば:

<table id="result">
  <tr>
    <td>Name :</td>
    <td id="name"></td>
  </tr>
  ... Other characteristics
</table>

このようにして、次のような簡単なことを行うことができます。document.getElementById('name') = character.name もちろん、このテーブルは、文字が生成される前に非表示になります('display' cssプロパティを使用)

于 2012-04-24T07:33:32.270 に答える