J'ai essayé de créer une fonction qui générerait un certain nombre d'éléments de liste en fonction de l'entrée de l'utilisateur. Cela ne fonctionne pas bien que je le crois.Problème lors de la création d'une liste non ordonnée avec le nombre d'éléments de la liste contrôlés par l'entrée de l'utilisateur
Je cherche une explication de ce qui ne va pas avec mon code même si une solution alternative est également fournie, si possible.
Du côté HTML je suis entré <div class="freshList"></div>
dans le corps afin qu'il puisse être repris par la fonction et ont la liste placée à cet endroit
est ci-dessous:
function makeAList()
{
var freshList = document.getElementsByClassName("freshList");
var listLength = prompt("Enter number of list items");
var listString = "<ul>";
for (var i=0; i < listLength; i++)
{
listString+= "<li>"+"</li>"
}
listString += "</ul>"
document.innerHTML = listString;
}
makeAList();
// end code
Maintenant, la La seule façon d'obtenir ce résultat est par accident lors de l'utilisation du document. Méthode d'écriture à différents points du code pour voir ce qui fonctionnait (j'ai d'abord essayé le journal de la console qui disait que la fonction était appelée mais aucune sortie ne venait donc je suis passé à doc.write à la place). J'ai utilisé document.Write (listString); et c'était capable d'imprimer de force les points de balle sur l'écran mais ce n'est pas mon désir. Je le veux dans le HTML non seulement imprimé sur l'écran (de sorte que je peux le manipuler avec d'autres fonctions que j'ai faites). Au total, j'ai voulu faire une série de fonctions pour effectuer l'action suivante: Demander si l'utilisateur souhaite faire une nouvelle liste. Appelez la fonction makeNewList qui invite l'utilisateur pour le nombre d'éléments. Demandez ensuite à l'utilisateur s'il souhaite modifier la liste et appeler la fonction editList avec de nouvelles invites pour chaque élément de la liste. Enfin, en laissant une sortie de # de points de balle avec l'entrée de l'utilisateur sur chaque point. Je suis sûr que c'est une idée ridicule que personne n'utiliserait mais c'était plus une leçon pour moi d'essayer une idée que j'avais plutôt que quelque chose de fonctionnel. Complète (tentative) Code ci-dessous:
function makeAList()
{
var freshList = document.getElementsByClassName("freshList");
var listLength = prompt("Enter number of list items");
var listString = "<ul>";
for (var i=0; i < listLength; i++)
{
listString+= "<li>"+"</li>"
}
listString += "</ul>"
document.innerHTML = listString;
}
makeAList();
function editAList() {
var list = document.getElementsByTagName("li");
for (var i = 0; i < list.length; i++)
{
list[i].innerHTML = prompt("Place list text below","")
}
function checkList(){
var resp1 = confirm("Would you like to make a new list?")
if(resp1 == true)
{
makeAList();
}
else
{
}
if(resp1 === false){
var resp2 = prompt("Would you like to edit an existing list instead?")
}
else if(resp2 === true){
editAList();
}
else{
alert("You have chosen not to make a new list or edit an existing one")
}
}
checkList();
problème est: 'document.innerHTML = listString,' 'Le document' n'a pas de propriété' .innerHTML'. On dirait que vous avez l'intention de mettre la liste dans l'élément 'freshList', mais ne l'a pas fait. Si c'est le cas, vous feriez 'freshList [0] .innerHTML = listString' –
*" les espaces sont mis ici parce qu'il ne s'affichait pas autrement pour mon post "* - Si vous utilisez back tick' caractères pour citer votre code, il ne sera pas interprété comme HTML. (J'ai édité votre question pour la réparer, si vous cliquez sur [modifier] vous pouvez voir exactement comment cela a été fait.) – nnnnnn
Aussi, si vous vouliez le premier, peut-être seulement 'freshList', alors mieux serait' var freshList = document.querySelector (". freshList") 'Il retourne la première correspondance au lieu d'une collection, donc vous feriez simplement' freshList.innerHTML = listString'. –