2013-05-09 71 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