2013-05-09 5 views
0

Я написал сценарий для заполнения selectbox с помощью набора параметров.неправильный вывод html из javascript

Первоначально data в виде строки в формате «ключ = значение; key2 = значение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> 

Как вы можете заметить выше, второй вариант в selectbox имеет поврежденное строковое значение. Мне нужно исправить это значение, потому что из-за этого торт не может правильно сохранить это значение.

Если у вас есть другие вопросы, пожалуйста, спросите.

+0

Почему это повреждено? Разве это не значение Бермудских островов? – neo

+0

@neo: линия сломана ('\ n') – MMM

ответ

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

, потому что, вероятно, он не делает то, что вы хотите. Во-первых, он удаляет все пробелы из строки, поэтому «Нью-Йорк» станет «NewYorkCity». Следующая вещь заключается в том, что метод replace возвращает новую строку, поэтому ваш код не будет иметь никакого эффекта. Это должно быть:

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

спасибо, что решает мою проблему :-) – user2192677

Смежные вопросы