2016-07-07 7 views
1

У меня есть Java-функция, которая генерирует список уль на основе массива передается при помощи подобного подхода к этому - Create a <ul> and fill it based on a passed arrayПоказывать содержание [объект HTMLUListElement] с помощью JavaScript

Однако, когда я сделать следующее .. .

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

Все, что печатается в

[object HTMLUListElement] 

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

+0

Вместо возврата HTML строку из функции. – Jai

+0

Возвращение строки из функции и, наконец, это будет похоже, что document.getElementById («список») innerHTML = «

  • List1
  • List2
  • List3
» –

+0

Было бы очень полезно знать, что 'ID =». list "' элемент. –

ответ

3

Вы создаете правильный элемент 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 
1

generateListFromArray возвращает элемент HTMLUListElement. Самое простое решение, чтобы написать его outerHTML:

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

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

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

10 баллов ... спасибо за помощь! –

+0

Упс ... Извините dfsq! ':)' –

+0

@ T.J.Crowder Конечно. Благодарю. ':)' –

1

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

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

Нет, это не то, что хочет OP. – dfsq

+0

@dfsq yup получил это от вашего ответа. – Jai

+0

Но вы можете очистить innerHTML перед добавлением, тогда он должен быть похож более или менее. – dfsq

1

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

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

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