Подтвердить что ты не робот

Динамически установить опции выбора с помощью JavaScript

Как я могу динамически устанавливать параметры из поля выбора html с помощью Javascript? Это моя настройка страницы:

<form name="test">
  <table>
    <tr>
      <td class='dataleft'>Product: </td>
      <td><select name='inptProduct'></select></td>
    </tr>
  </table>
</form>

У меня есть все значения в массиве. Это местоположение для установки <option> s.

for(var i = 0; i < productArray.length; i++) {
    console.log("<option value='" + productArray[i] + "'>" + productArray[i] + "</option>");
}

PS: можно использовать jQuery.


Решение: Это окончательное решение, которое я искал. Он не применяет новые параметры к полю select. Сначала он удаляет все, а затем добавляет новые:

var optionsAsString = "";
for(var i = 0; i < productArray.length; i++) {
    optionsAsString += "<option value='" + productArray[i] + "'>" + productArray[i] + "</option>";
}
$("select[name='inptProduct']").find('option').remove().end().append($(optionsAsString));
4b9b3361

Ответ 1

wellyou почти все это сделал:

var optionsAsString = "";
for(var i = 0; i < productArray.length; i++) {
    optionsAsString += "<option value='" + productArray[i] + "'>" + productArray[i] + "</option>";
}
$( 'select[name="inptProduct"]' ).append( optionsAsString );

EDIT удалил $wrapper вокруг последнего optionsAsString, поскольку append автоматически преобразует строки

Ответ 2

var $inputProduct = $("select[name='inputProduct']")

$(productArray).each(function(i, v){ 
    $inputProduct.append($("<option>", { value: v, html: v }));
});

Ответ 3

Предполагая, что массив productArray является простым массивом, причем каждый элемент является значением опции и желаемым заголовком для этой опции.

$( 'select[name="inptProduct"]' )
  .html( '<option>' + productArray.join( '</option><option>' ) + '</option>' );

Пример:

productArray = ['One', 'Two', 'Three'];

// With the original code being

<select name="inptProduct">
  <option>There could be no options here</option>
  <option>Otherwise, any options here will be overwritten</option>
</select>

// Running the code above would output

<select name="inptProduct">
  <option>One</option>
  <option>Two</option>
  <option>Three</option>
</select>

Ответ 4

function onLoad() {

  var type = new Array("Saab","Volvo","BMW");

    var $select = $("select[name='XXXXXType']")
    alert($select);
    $(type).each(function(i, v){
        $select.append($("<option>", { value: v, html: v }));
      });

}
<select name="XXXXXType" id="XXXXXType"></select>

Ответ 5

Если вы не настаиваете на том, чтобы чистый JavaScript выполнял задание, вы можете легко выполнить задание с помощью jQuery.

<form name="test">
  <table>
    <tr>
      <td class='dataleft'>Product: </td>
      <td><select id='inptProduct'></select></td>
    </tr>
  </table>
</form>


for (var i = 0; i < productArray.length; i++) {
    $("#inptProduct").append('<option value=' + if_you_want_set_value + '>' + productArray[i] + '</option>');
    }

Обратите внимание, что здесь я использовал идентификатор тега select. Поэтому я также добавляю html-часть. Надеюсь, вы знаете, как добавить jQuery.

Ответ 6

Обычно я делаю это так:

document.getElementById("selectid").innerHTML="<option value='foo'>FOO</option>";

Ответ 7

вы можете установить id для выбора id = inptProduct Затем сделайте $('# inptProduct'). Val (yourselectValue)