Я попытался создать функцию, которая генерировала бы ряд элементов списка на основе пользовательского ввода из подсказки. Это не работает, хотя я считаю, что должно.
Я ищу объяснение того, что не так с моим кодом, даже если альтернативное решение также предоставлено, если это возможно.
На стороне 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
- person   schedule 10.02.2017freshList
, то лучше будетvar freshList = document.querySelector(".freshList")
. Он возвращает первое совпадение вместо коллекции, поэтому вы просто делаетеfreshList.innerHTML = listString
. - person   schedule 10.02.2017