2017-10-09 14 views
1

json形式のデータをいくつか選択しています。ここでJavascript jsonデータをES6で選択した場合(jqueryなし)

{ 
    "timezones": 
    { 
     "country": "Africa", 
     "tz": "Africa/Abidjan" 
    }, 
    { 
     "country": "America", 
     "tz": "America/Anguilla" 
    } 
} 

ある現在の選択:ここで

はデータです

<select> 

    <optgroup label="Africa"> 
     <option value="Africa/Abidjan">Adak</option> 
    </optgroup> 

    <optgroup label="America"> 
     <option value="America/Adak">Anguilla</option> 
    </optgroup> 

</select> 

は、どのように私の代わりにjQueryせずにハードコーディングのJSONデータから選択取り込むことができますか?

+0

オブジェクトが構文エラーをスローします。 –

+0

'timeszones'は配列にするか、すべてのエントリにインデックスを付ける必要があります。 – JoeriShoeby

+0

1.今すぐデータ/ JSONを修正してください。有効ではありません。 2.なぜ ''要素ですか?複数のエントリがありますか? 3.「

答えて

1

.forEachメソッドと組み合わせてappendChildメソッドを使用できます。まず

let obj={ 
 
    "timezones": 
 
    [{ 
 
     "country": "Africa", 
 
     "tz": "Africa/Abidjan" 
 
    }, 
 
    { 
 
     "country": "America", 
 
     "tz": "America/Anguilla" 
 
    }] 
 
}; 
 
let select=document.getElementById('countrySelect'); 
 
obj.timezones.forEach(function(item){ 
 
    let newOptGroup=document.createElement('optgroup'); 
 
    newOptGroup.label=item.country; 
 
    let option=document.createElement('option'); 
 
    option.value=item.tz; 
 
    option.text=item.tz; 
 
    newOptGroup.appendChild(option); 
 
    select.appendChild(newOptGroup); 
 
});
<select id="countrySelect"> 
 

 
</select>

+0

テキストは値と同じではありません(データ/質問には含まれていません) – Andreas

+0

@Andreas、私は知っていますが、私はOPに、主要な要素である選択要素を作成する方法を解きます。 –

0

、あなたはJSONデータが有効ではありませんね。 'timezones'は配列であるか、すべてのオブジェクトにインデックスを持ちます。

データ

let data = { 
    "timezones": [ 
    { 
     "country": "Africa", 
     "tz": "Africa/Abidjan" 
    }, 
    { 
     "country": "America", 
     "tz": "America/Anguilla" 
    }] 
} 

私は次のようにオプションを移入します:

data.timeszones.forEach(function(timezone) { 
    let optionGroup = document.createElement('optgroup'); 
     optionGroup.setAttribute('label', timezone.country); 

    let option = document.createElement('option'); 
     option.setAttribute('value', timezone.tz); 

    optionGroup.appendChild(option); 
    document.getElementById('selectionList').appendChild(optionGroup); 
}); 

そしてobvisouslyは、あなたの要素にIDを設定することを忘れないでください。

<select id='selectionList'> 
    <optgroup label="Africa"> 
     <option value="Africa/Abidjan">Adak</option> 
    </optgroup> 

    <optgroup label="America"> 
     <option value="America/Adak">Anguilla</option> 
    </optgroup> 
</select> 
関連する問題