2016-05-03 4 views
0

しかし、 "value"フィールドに "ID"を渡し、オプションテキストとして対応する文字列を渡したいと思います。黒= 1、白= 2、青= 3のIDは、その後、HTMLは次のようになります場合JavaScriptのループでハッシュテーブル/ディクショナを渡す

ので、:

<option value ='1'> Black </option> 

このJSFiddleは私が達成しようとしているものに似ています。

http://jsfiddle.net/e6hzj8gx/4/

私は唯一の値を送信し、それを呼び出すためのキーを使用することを除いて。

私は基本的に、ユーザーが別のドロップダウンで選択したものに依存するDjangoのドロップダウンを構築しています。これはDjangoでこれを行うためのエレガントな方法ではありません。ドロップダウンを構築するためのjavascriptは行く方法です。

私のDjangoのデータは単なる辞書です:

data = {1: 'Black', 2 = 'White', 3 = 'Blue'} 

答えて

2

javascriptオブジェクトをループにはいくつかの方法があります。解析されたJSONオブジェクトを操作するときは、使用することができます:

if (obj.hasOwnProperty(propName) { /* ... */ } 

さらに:

for (var propName in obj) { 
    // access data using obj[propName] 
} 

より複雑なケースでは、プロパティを使用して他のいくつかのプロトタイプから継承されていないかどうかを確認する必要がある場合があります

var obj = JSON.parse(serverData); 
for (var propName in obj) { 
    var jsonValue = obj[propName]; 
    if (jsonValue && (typeof jsonValue === "string")) { 
    var option = document.createElement("option"); 
    option.value = propName; 
    option.innerText = jsonValue; 

    // Add created option to a select element 
    // ... 
    } 
} 
01:、あなたはすべて一緒に document.createElement("option")

を使用してDOM要素を作成することができ、それはこのようなものになるだろう

あなたの質問が正しいかどうか教えてください...

+0

obj [propName]が最初に定義されているか文字列かを確認したい場合があります。オブジェクトに対してforを実行すると、最終的に未定義になります。 – adrianj98

+0

@ adrianj98、有効なポイント。私は定義された/空の/文字列チェックでコードを更新しました。 – user3297291