默认选择<select>中的所有选项

时间:2020-04-07 19:54:42

标签: javascript php html drupal option

当我收费html时,我需要默认情况下通过选项列表选择所有选项: 这是我在.inc

中的代码的一部分
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 个答案:

答案 0 :(得分:1)

您正在比较值,而不是设置它们:

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

这样做,您不必再次遍历选项,因此可以删除此循环:

for(var i = 0; i < elements.length; i++){
  elements[i].selected= true;
}

答案 1 :(得分:0)

您的代码不起作用,因为您正在比较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
}