J'ai un tableau d'objets que j'aimerais utiliser pour remplir une liste déroulante d'option de sélection, mais ces éléments n'existent pas déjà et doivent être créés à partir de zéro.
J'ai du code de travail utilisant le createElement
, mais je ne peux pas utiliser cette méthode ni utiliser options.add (new Option ())
. Sinon, comment puis-je créer les éléments select et option dans JavaScript?
var optionsList = [ { label: "Option 1", value: "option-1" }, { label: "Option 2", value: "option-2" }, { label: "Option 3", value: "option-3" } ]; if (optionsList.length == 0) { console.log("No data"); } else { var selectTag = document.createElement("SELECT"); document.body.appendChild(selectTag); for (var i = 0; i < optionsList.length; i++) { var option = optionsList[i]; selectTag.options.add(new Option(option.label, option.value)); } }
3 Réponses :
Au lieu de dire
optionsList.forEach(function(item, index, array) { var opt = document.createElement("option"); opt.text = item.label; opt.value = item.value; selectTag.add(opt); });
Créez simplement un nouvel élément 'option', puis ajoutez-le à la balise de sélection comme ceci
selectTag.options.add(new Option(...))
Vous pouvez consulter ce lien https://www.w3schools.com/jsref/met_select_add.asp pour plus d'informations.
et un exemple fonctionnel ici https://jsfiddle.net/ L5342j0y /
Mais est-il possible de créer les éléments sans utiliser la méthode createElement ()?
Vous pouvez simplement créer une chaîne avec des littéraux de modèle (plus facile et plus concis que la concaténation) et l'ajouter à l'élément select:
optionsList.forEach(e => selectTag.innerHTML += `<option value=${e.value}>${e.text}</option>`);
Le code HTML et JavaScript suivant montre comment ajouter une sélection et des options à l'aide des données d'un tableau d'objets contenant des étiquettes d'options et leurs valeurs:
function app() { var optionsList = [ { label: "Option 1", value: "option-1" }, { label: "Option 2", value: "option-2" }, { label: "Option 3", value: "option-3" } ]; var selectTag = document.createElement("select"); for (let optObj of optionsList) { let optEle = document.createElement("option"); optEle.text = optObj.label; optEle.value = optObj.value; selectTag.add(optEle); } var div = document.getElementById("div-id"); div.appendChild(selectTag); };
app.js :
<html> <head> <meta charset="utf-8"> <script src="app.js"></script> </head> <body onload="app()"> <p>Select your choice:</p> <div id="div-id"> <!-- The select with data gets added here --> </div> </body> </html>
Que signifie «je ne peux pas utiliser ça»?
Désolé, je voulais dire que je ne peux pas utiliser cette méthode pour créer l'élément select, ni utiliser options.add (nouvelle Option ()