Выберите по умолчанию все опции в <select> - PullRequest
1 голос
/ 07 апреля 2020

Мне нужно при зарядке html, выбрать по умолчанию все опции в списке опций: это часть моего кода в .in c

drupal_add_js(
            "
            var projects='$projectsEncode';
            var narrativeList='$narrativeListEncode';
            var outputs='$outputsEncode';
            var topoNetwork='$topologicalNetworkEncode';
            var datasetUuid='$datasetUuid';
            var narrativeCount='$narrativeCount';
            var footprintNid='$footprintLayersEncode';
            ",
            'inline'
        );

это часть моего кода в. js

var narratives = JSON.parse(narrativeList);
var narrativeDropdown = $("#narrativeMode");
narratives.forEach(function (narrative) {
narrativeDropdown.append('<option value=' + narrative.nid + '> 
 Narrativa ' + narrative.name + '</option>');
  });
var elements = document.getElementById("narrativeMode").options;
console.log("Elementos cargados:",elements)
for(var i = 0; i < elements.length; i++){
 elements[i].selected= true;

}

и это html.

<select class="mi-selector custom-select" multiple='multiple' data-style="form-control" data-live-search="true" title="-- Seleccione mínimo 1--" id="narrativeMode">

        </select>

Спасибо за вашу помощь

Ответы [ 2 ]

1 голос
/ 07 апреля 2020

Вы сравниваете значения, не устанавливая их:

elements[i].selected == true;

Использование:

elements[i].selected = true;

Рабочий пример:

var narrativeDropdown = $("#narrativeMode");
var elements = document.getElementById("narrativeMode").options;
console.log("Elementos cargados:", elements)
for (var i = 0; i < elements.length; i++) {
  elements[i].selected = true;
}
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<select class="mi-selector custom-select" multiple='multiple' data-style="form-control" data-live-search="true" title="-- Seleccione mínimo 1--" id="narrativeMode">
  <option>1</option>
  <option>2</option>
  <option>3</option>
</select>

Обновление

Вы можете добавить selected к элементам опции при их создании:

narrativeDropdown.append('<option value=' + narrative.nid + ' selected> 
  Narrativa ' + narrative.name + '</option>');
});

Делая это, вам не нужно снова l oop над опциями, поэтому вы можете удалить это l oop:

for(var i = 0; i < elements.length; i++){
  elements[i].selected= true;
}
0 голосов
/ 07 апреля 2020

Ваш код не работает, потому что вы сравниваете selected вместо атрибуции.

Измените это:

for(var i = 0; i < elements.length; i++){
  elements[i].selected== true; // Note the use of == here
}

на это:

for(var i = 0; i < elements.length; i++){
  elements[i].selected = true; // Note the use of single = here
}
...