0

javascriptでは、jsonオブジェクトを読み込んで、その中の値を更新しようとしています。htmlの要素には、パスに一致するIDがあります。たとえば、次の「values.one」要素は次のようになります。

{"values":{"one": "val1"、 "two": "val2"}、 "OtherStuff": "whatever"}

この要素に関連します:

<input id="values_one" type="text">val1</div>

この要素がフォーカスを失ったとき、(jQueryを使用して)「#values_one」の値を取得し、jsonオブジェクトにある値を使用するように設定します。既存のjsonオブジェクトから値を取得する方法を理解しましたが(以下の恐ろしいコードを参照)、最終的には値しか得られないため、設定してもjsonオブジェクトには影響しません。これを行う方法についての提案はありますか(フォーカスを失った要素が「values_one」、「values_two」、またはjsonオブジェクトにマップされる可能性のある他の要素であるかどうかわからないと仮定します)?

これが私がこの時点で持っているコードです(それは機能していません)が、実際に機能するもののためにそれをスクラップして幸せです:

var saveEdit = function() {
  var data = getJson();
  pathElements = $(this).attr('id').split('_'); 
  length = pathElements.length;
  var path = data[pathElements[0]];
  index = 1;
  while (index < length) {
      path = path[pathElements[index]];
      length -= 1;
  }
  path = $(this).text(); //resets "path", but not data.values.one
  $(this).unbind();
}
4

2 に答える 2

1

長さより1つ短いループを作成して、最後の識別子に一致するプロパティを含む要素を取得します。

var path = data;
for (index = 0; index < length - 1; index++) {
  path = path[pathElements[index]];
}
path[pathElements[length - 1]] = $(this).text();
于 2013-03-17T01:01:11.277 に答える
1

まず、「JSONオブジェクト」のようなものはありません。はい、私は衒学者ですが、「JSON文字列」または「Javascriptオブジェクト」のいずれかが必要です。

オブジェクト自体を参照および変更できるようにするのではなく、イベントを介してJSON文字列を変更しようとしているようです。なぜそれを文字列に保持するのをわざわざするのですか?データをエクスポートする準備ができたら(おそらくデータベースに保存する)、stringify();オブジェクトだけをエクスポートしてください。

次のjsFiddleを見て、構築できる実用的な実装を確認してください。http: //jsfiddle.net/julianlam/WRZPF/

于 2013-03-17T01:05:58.213 に答える