Я попытался создать функцию, которая будет генерировать количество элементов списка на основе пользовательского ввода из приглашения. Это не работает, хотя я считаю, что это должно произойти.Ошибка создания неупорядоченного списка с количеством элементов списка, управляемых пользователем.
Я ищу объяснение, что не так с моим кодом, даже если альтернативное решение также предоставляется, если это возможно.
На HTML стороне я вошел <div class="freshList"></div>
в организме, так что он может быть подобран функции и список помещен в этом месте
код ниже:
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
Теперь единственный способ, которым я смог заставить это работать, был случайно при использовании метода document.Write в разных точках кода, чтобы увидеть, что работает (я сначала попробовал консольный журнал, в котором говорилось, что функция была вызвана, и цикл продолжался но выход не шел, поэтому я переключился на doc.write). Я использовал document.Write (listString); и это удалось принудительно напечатать точки маркера на экране, но это не мое желание. Я хочу, чтобы он в HTML не просто был напечатан на экране (так что я могу манипулировать им другими функциями, которые я создал).
В целом я хотел сделать ряд функций для выполнения следующих действий: спросите, хочет ли пользователь создать новый список. Вызовите функцию makeNewList, которая будет запрашивать у пользователя количество элементов. Затем спросите пользователя, хотят ли они редактировать список и вызвать функцию editList с новыми приглашениями для каждого элемента списка. Наконец, оставляя вывод из # точек пули с пользовательским вводом на каждую точку. Я уверен, что это смешная идея, что никто не будет использовать, но это был скорее урок для меня, чтобы попробовать идею, которую я имел, а не что-то функциональное. Полный (попытка) код ниже:
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();
Проблема: 'document.innerHTML = listString;' 'document' не имеет' свойство .innerHTML'. Похоже, вы намеревались поместить список в элемент 'freshList', но не сделали этого. Если это так, вы должны сделать 'freshList [0] .innerHTML = listString' –
*" пробелы помещены здесь, потому что они не отображались иначе для моего сообщения "* - Если вы используете обратные тиковые символы, кода он не будет интерпретироваться как HTML. (Я отредактировал ваш вопрос, чтобы исправить его, если вы нажмете [edit], вы можете точно увидеть, как это было сделано.) – nnnnnn
Кроме того, если вы хотите первый, возможно, только «freshList», то лучше будет «var freshList» = document.querySelector (". freshList") 'Он возвращает первое совпадение вместо коллекции, поэтому вы просто делаете' freshList.innerHTML = listString'. –