2013-05-09 70 views
0

我寫了一個腳本來填充選擇框和一堆選項。來自javascript的錯誤html輸出

最初data處於格式的字符串的形式「鍵=值;鍵2 =值;等等..」:

//split the string to distinguish between different options to populate a selectbox with 
var values = data.split(';'); 
//reset the length of the selectbox to be populated 
document.getElementById(child).options.length = 0; 
//create first default option 
document.getElementById(child).options[0] = new Option('all', '0'); 
for(var i = 0; i < values.length; i++){ 
    //check for and remove unnecessary characters 
    values[i].replace(/\s+/g, ''); 
    //split the option to get the key and value separately 
    var options = values[i].split('='); 
    if(!isEmpty(options[0]) && !isEmpty(options[1])){ 
     //insert a new element to the selectbox 
     document.getElementById(child).options[i+1] = new Option(options[1], options[0]); 
    } 
} 

上面的例子填充具有給定的HTML輸出一個選擇框:

<option value="0">all</option> 
<option value=" 
7">Bermuda</option> 
<option value="10">British Virgin Islands</option> 
<option value="15">Cayman Islands</option> 
<option value="42">Jamaica</option> 
<option value="74">St. Lucia</option> 
<option value="79">Trinidad Tobago</option> 

正如您可以注意到上面的選擇框中的第二個選項有一個損壞的字符串值。我需要修正這個值,因爲那個蛋糕不能正確保存這個值。

如果您有任何其他問題,請詢問。

+0

爲什麼它損壞?百慕大不是價值嗎? – neo 2013-05-09 13:29:09

+0

@neo:線路壞了('\ n') – MMM 2013-05-09 13:33:27

回答

0

你應該嘗試調節值:

document.getElementById(child).options[i+1] = new Option(
    options[1].replace(/^\s+|\s+$/g, ''), 
    options[0].replace(/^\s+|\s+$/g, '') 
); 

,或者如果你正在使用jQuery:

document.getElementById(child).options[i+1] = new Option(
    $.trim(options[1]), 
    $.trim(options[0]) 
); 

你也應該看看接近這個片段:

values[i].replace(/\s+/g, ''); 

,因爲可能它不會做你想要的。首先,它從字符串中刪除所有的空格,所以「紐約市」將變成「紐約市」。接下來是replace方法返回新的字符串,所以你的代碼將不起作用。它應該是:

values[i] = values[i].replace(/\s+/g, ''); 
+0

謝謝,解決了我的問題:-) – user2192677 2013-05-09 13:41:40