2017-07-29 55 views
1

對於WebInterface,我需要使用JavaScript將無限量的JSON數組添加到無限量的選項菜單中。我還是使用JavaScript進行編程的新手,我認爲你可以幫助我。如何將JSON數組添加到無限量的選項菜單中?

我找到了一個將JSON數組添加到optionmenu工作的解決方案,因此我嘗試添加一些代碼以使其可以使用無限量的選項菜單。

我有兩個選擇標籤:

<select id="selection1" class="selectionMenu"> </select> 
<select id="selection2" class="selectionMenu"> </select> 

下面的代碼是我摸索出的選項標籤添加到這兩個選擇菜單不爲我工作的腳本。

<script> 

var arr = [ 
    'selection1', 
    'selection2' 
] 

var arrLen = arr.length - 1; 

for (j = 0; j < arrLen; j++) { 

    var arrElm = arr[j]; 

    var select = doucment.getElementById(arrElm); 

    var text = '{"nrrps":[' + 
    '{"dbC":"PI1","PIIP":"192.168.2.17" },' + 
    '{"dbC":"PI2","PIIP":"192.168.2.18" },' + 
    '{"dbC":"PI3","PIIP":"192.168.2.19" }]}'; 

    for (i=0; i < text.length; i++;) { 

    var opt = document.createElement('option'); 

    var counter2 = i + 1; 

    obj = JSON.parse(text); 

    var insertText = obj.nrrps[i].dbC + " " + obj.nrrps[i].PIIP + " "; 

    var optVal = obj.nrrps[i].dbC; 

    opt.value = optVal; 

    opt.innerHTML = insertText; 

    opt.setAttribute("class", "sOption"); 

    select.appendChild(opt); 

    } 

} 

</script> 

當我運行代碼時,JSON數組被插入到第一個選擇標記中,而不是第二個。我不知道爲什麼。此外,在選擇選項後,是否有可能獲得每個選擇標籤的價值?

我希望你能幫助我。

預先感謝您!

回答

0

1:首先作爲@kamesh長度提到你已經applied -1因此改變經營者像下面j <= arrLen;

for (j = 0; j <= arrLen; j++) { ... } 

第二:在第二for loop您檢查length文本所以它會給文本長度122 something。這是錯誤的,所以你需要申請JSON.parse(),然後找到如下長度的選項

var obj = JSON.parse(text); 

for (i=0; i < obj.nrrps.length; i++) {...} 

var arr = [ 
 
\t 'selection1', 
 
\t 'selection2' 
 
\t ] 
 

 
var arrLen = arr.length - 1; 
 

 
for (j = 0; j <= arrLen; j++) { 
 

 
    var arrElm = arr[j]; 
 

 
    var select = document.getElementById(arrElm); 
 

 
    var text = '{"nrrps":[' + 
 
\t \t \t '{"dbC":"PI1","PIIP":"192.168.2.17" },' + 
 
\t \t \t '{"dbC":"PI2","PIIP":"192.168.2.18" },' + 
 
\t \t \t '{"dbC":"PI3","PIIP":"192.168.2.19" }]}'; 
 
    
 
    //console.log(text.length); 
 
    
 
    var obj = JSON.parse(text); 
 
    
 
    for (i=0; i < obj.nrrps.length; i++) { 
 

 
    var opt = document.createElement('option'); 
 

 
    var counter2 = i + 1; 
 

 
    var insertText = obj.nrrps[i].dbC + " " + obj.nrrps[i].PIIP + " "; 
 

 
    var optVal = obj.nrrps[i].dbC; 
 

 
    opt.value = optVal; 
 

 
    opt.innerHTML = insertText; 
 

 
    opt.setAttribute("class", "sOption"); 
 

 
    select.appendChild(opt); 
 

 
    } 
 

 
}
<select id="selection1" class="selectionMenu"> </select> 
 
<select id="selection2" class="selectionMenu"> </select>

+0

很樂意幫助你:) – JYoThI

0

您已經從數組長度中減去1。所以運行你的循環直到< = array.length。

.... 
.... 
for (j = 0; j <= arrLen; j++) { 

    var arrElm = arr[j]; 
.... 
.... 
相關問題