Vous utilisez innerHtml et en passant 'x' qui est un élément HTML. Contrairement à 'innerText', 'innerHTML' ne définira pas la chaîne que vous lui transmettez en texte brut, ou HTML échappé, mais en HTML réel, à traiter en HTML. C'est pourquoi vous obtenez: '[object HTMLSelectElement]' au lieu de la valeur que vous voyez imprimée sur la console - parce que dans votre console.log() vous appelez 'x.value', plutôt que simplement 'x'. Votre 'document.getElementById ("fruitSelect")' retourne un '[objet HTMLSelectElement]' qui est un élément dans le DOM de votre page, pas simplement la 'valeur' de l'élément. Cet élément a des propriétés, dont l'une est 'value', comme le montre votre appel à console.log (x.value).
Ma suggestion serait de faire votre balise <p>
un tag <ul>
, puis ajoutez <li>
balises à la « valeur » d'un élément sélectionné à l'intérieur, afin de construire la liste de puce que vous cherchez à faire. Dans l'exemple ci-dessous, j'ai laissé la fonction d'impression d'origine en place pour la comparaison, j'ai ajouté deux variantes et j'ai remplacé la balise <p>
qui l'accompagne par une balise <ul>
. Exécutez l'exemple, examinez la différence entre les trois fonctions, et vous devriez avoir l'idée.
<html>
<head>
<title></title>
<meta charset="UTF-8">
</head>
<body>
<h3> Pick your fruit to print it to the menu below</h3>
<select id="fruitSelect">
<option value="banana">banana</option>
<option value="strawberry">strawberry</option>
<option value="apple">apple</option>
</select>
<ul id="printHere">
</ul>
<button type="button" onclick="print()">What you had</button>
<button type="button" onclick="setAsList()">Set as selection</button>
<button type="button" onclick="addToList()">Add to selection</button>
<script>
function print() {
var x = document.getElementById("fruitSelect");
console.log(x.value);//test to see if it works
document.getElementById("printHere").innerHTML = x;
}
function setAsList(){
var x = document.getElementById("fruitSelect");
console.log(x.value);//test to see if it works
document.getElementById("printHere").innerHTML = "<li>" + x.value + "</li>";
}
function addToList() {
var x = document.getElementById("fruitSelect");
console.log(x.value);//test to see if it works
document.getElementById("printHere").innerHTML += "<li>" + x.value + "</li>";
}
</script>
</body>
</html>
La différence entre la fonction « setAsList » et le « addToList() » est que l'opérateur utilise le réglage de la « .innerHTML », qui est, d'une part « = » est utilisé pour définir innerHTML, et d'autre part, '+ =' est utilisé pour ajouter à l'innerHTML existant. – dylansweb