0

我编写了一个脚本来填充带有一堆选项的选择框。

最初data是格式为“key=value;key2=value2;etc...”的字符串形式:

//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>

正如您在上面看到的,选择框中的第二个选项具有损坏的字符串值。我需要修复该值,因为该蛋糕无法正确保存该值。

如果您有任何其他问题,请提出。

4

1 回答 1

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, '');

因为它可能不会做你想要的。首先,它从字符串中删除所有空格,因此“New York City”将变为“NewYorkCity”。接下来是该replace方法返回新字符串,因此您的代码将无效。它应该是:

values[i] = values[i].replace(/\s+/g, '');
于 2013-05-09T13:26:11.397 回答