2015-02-11 4 views
0
//initial code 

var selectInputs = document.querySelectorAll('option:checked'); 
    var selectArray=[];       
     for(var i=0;i<selectInputs.length;i++) 
      { 
      selectArray[i]=selectInputs[i].value;//am doing this since I found out (from stackoverflow) that selectInputs contains a NodeList and in order to use it, it must be converted or saved as an array 
      } 

    //later stage manipulation code 

var input_select= document.querySelectorAll('option:checked'); 
for(var i=0;i<input_select.length;i++) 
{ 
input_select[i].value=selectArray[i];//I am trying to change the value of the <select> option 
} 

ЦЕЛЬ: Пользователь выбирает опцию в форме и данные сохраняются в локальном хранилище. Я хочу отразить то же самое, когда форма перезагружается. Я не работаю для конкретной формы, поэтому использование JQuery кажется бесполезным (поскольку оно работает с классом или идентификатором, и я не знаю id или класс любого тега обобщенной формы)Как выбрать тег <select>, включая отмеченные и непроверенные параметры с помощью queryselectorAll()?

ПРОБЛЕМА: Проблема в том, что Я хочу выбрать весь набор параметров тега, а не только те, которые были проверены/выбраны. В приведенном выше коде устанавливается значение выбранного по умолчанию параметра, которое хранится в локальном хранилище, но не отражает изменения в форме. Он всегда отображает значение по умолчанию, хотя дает значение

alert(input_select[i].value); 

отражает внутреннее изменение отлично!

+0

Как вы отметили этот вопрос с помощью jquery, вы ищете реализацию jQuery? Если это так, использование 'querySelectorAll' становится излишним. –

+0

Извините, это моя ошибка. Но насколько я знаю, я не нахожу решения, использующие JQuery для моей проблемы. Но, если бы вы могли предоставить один, это будет здорово –

ответ

0

Guess Я должен ответить на мой собственный вопрос :-D

Если бы вы могли видеть, что есть только один глупое изменение

код // позже манипуляция этапа ВЫШЕ.

ОТВЕТ:

var input_select= document.querySelectorAll('select'); 
for(var i=0;i<input_select.length;i++) 
{ 
input_select[i].value=selectArray[i];//I am trying to change the value of the <select> option 
} 

Вместо

var input_select= document.querySelectorAll('option:checked'); 

Должно быть

var input_select= document.querySelectorAll('select'); 

ПРИЧИНА: Я пытался присвоить сохраненное значение в самой опции (опция тег), а не тег select в целом.

ВНИМАНИЕ: В коде

input_select[i].value=selectArray[i]; 

Это также может быть

input_select[i].value="Friday"; 

при условии, что у вас уже есть вариант, как это, иначе она будет показывать пустой.

<select name="days" id=days"> 
<option value="0"> Friday </option> 
<option value="1"> Monday </option> 
</select> 

works 

<select name="days" id=days"> 
<option value="0"> Saturday </option> 
<option value="1"> Monday </option> 
</select> 

doesn't work. Shows a blank.