Отобразить содержимое [объекта HTMLUListElement] с помощью JavaScript

У меня есть функция JavaScript, которая генерирует список ul на основе массива, передаваемого с использованием аналогичного подхода к этому -Создайте <ul> и заполните его на основе переданного массива.

Тем не менее, когда я делаю следующее ...

document.getElementById("list").innerHTML = generateListFromArray(array);

Все что напечатано

[object HTMLUListElement]

Может кто-нибудь сказать мне, как распечатать содержимое в div в виде HTML?

 Jai07 июл. 2016 г., 10:15
Вместо этого верните HTML-строку из функции.
 T.J. Crowder07 июл. 2016 г., 10:31
Было бы очень полезно узнать, чтоid="list" Элемент
 Saurabh Ahuja07 июл. 2016 г., 10:19
Возвращает строку из функции, и, наконец, она будет выглядеть следующим образом: document.getElementById ("list"). InnerHTML = "<ul> <li> List1 </ li> <li> List2 </ li> <li> List3 </ li> </ UL>»

Ответы на вопрос(4)

Либо использоватьinnerHTML или жеouterHTML:

document.getElementById("list").innerHTML = generateListFromArray(array).innerHTML;

ИспользоватьinnerHTML если у вас уже естьlist как<ul>.

generateListFromArray возвращает HTMLUListElement. Самое простое решение - написатьouterHTML:

list").innerHTML = generateListFromArray(array).outerHTML;

Однако если#list элемент в HTML ужеUL тогда вы не хотите иметь дополнительные<ul></ul> (разметка будет недействительной). В этом случае вам нужно будет использоватьinnerHTML:

;list").innerHTML = generateListFromArray(array).innerHTML;
 Praveen Kumar Purushothaman07 июл. 2016 г., 10:19
Ой ... Извините, дфск!:)
 Chris Headleand07 июл. 2016 г., 10:15
10 баллов ... спасибо за помощь!
 dfsq07 июл. 2016 г., 10:25
@PraveenKumar Я только позже понял, чтоlist может означать, что это UL, поэтому обновил ответ. Не будь таким параноиком, чувак :)
 Praveen Kumar Purushothaman07 июл. 2016 г., 10:25
@dfsq Я знаю ... Я извиняюсь извините!:(
 Praveen Kumar Purushothaman07 июл. 2016 г., 10:22
@ T.J.Crowder Конечно. Благодарю.:)
Решение Вопроса

Вы создаете правильный элемент UL (HTMLUListElement), это здорово. Вы можете использовать этонепосредственно просто добавив его к вашей цели:

document.getElementById("list").appendChild(generateListFromArray(array));

Если цель уже содержит контент, который вы хотитезамещать (вместо того, чтобы добавлять), вы можете сначала очистить целевой элемент:

var list = document.getElementById("list");     // Get the target element
list.innerHTML = "";                            // Remove previous content
list.appendChild(generateListFromArray(array)); // Append your generated UL

Просто нет никакой причины, чтобы сначала преобразовать созданный вами элемент в разметку (используя.innerHTML или же.outerHTML на возвращаемое значениеgenerateListFromArray).

Если list такжеul и ты хочешьзамещать это, вы можете сделать это сinsertBefore а такжеremoveChild:

var list = document.getElementById("list");     // Get the target element
var parent = list.parentNode;                   // Get its parent
var newList = generateListFromArray(array);     // Get the new one
parent.insertBefore(
    newList,                                    // Insert the new list...
    list                                        // ...before the old one
);
parent.removeChild(list);                       // Remove the old
newList.id = "list";                            // Give the new list the ID the
                                                // old one had

Вы могли бы использоватьappendChild() метод:

document.getElementById("list").appendChild(generateListFromArray(array)));  
 Jai07 июл. 2016 г., 10:17
@dfsq ага получил от твоего ответа.
 dfsq07 июл. 2016 г., 10:17
Нет, это не то, что хочет ОП.
 dfsq07 июл. 2016 г., 10:21
Но вы можете очистить innerHTML перед добавлением, тогда он должен быть более или менее похожим.

Ваш ответ на вопрос