【发布时间】:2017-05-12 04:37:57
【问题描述】:
我有以下数组,我想从中创建一个无序列表,但是我无法以正确的格式生成无序列表。我搜索了类似的问题,但现有的解决方案都不适用于我的问题。
var myArray = ['Value 1', ['Inner value 1', 'Inner value 2', 'Inner value 3', 'Inner value 4'], 'Value 2', 'Value 3', 'Value 4', 'Value 5', 'Value 6'];
这是我的 JavaScript 代码:
function arrToUl(arr) {
var div = document.getElementById('myList');
var ul = document.createElement('ul');
for (var i = 0; i < arr.length; i++) {
if (arr[i] instanceof Array) {
var list = arrToUl(arr[i]);
} else {
var li = document.createElement('li');
li.appendChild(document.createTextNode(arr[i]));
console.log(ul.appendChild(li));
}
div.appendChild(ul);
}
}
arrToUl(myArray);
以上代码产生以下结果:
<ul>
<li>Value 1</li>
<li>Inner Value 1</li>
<li>Inner Value 2</li>
<li>Inner Value 3</li>
<li>Inner Value 4</li>
<li>Value 2</li>
<li>Value 3</li>
<li>Value 4</li >
<li>Value 5</li >
<li>Value 6</li>
但结果应该如下所示:
<ul>
<li>Value 1
<ul>
<li>Inner Value 1</li>
<li>Inner Value 2</li>
<li>Inner Value 3</li>
<li>Inner Value 4</li>
</ul>
</li>
<li>Value 2</li>
<li>Value 3</li>
<li>Value 4</li>
<li>Value 5</li>
<li>Value 6</li>
感谢您的帮助。
【问题讨论】:
-
问:如果myArray = ['Value 1', ['Inner value 1', 'Inner value 2', 'Inner value 3', 'Inner value 4'], 应该是什么结果? ['内值 5'、'内值 6'、'内值 7'、'内值 8']、'值 2'、'值 3'、'值 4'、'值 5'、'值 6' ] ?
-
使用instanceof检测Array不可靠,请改用Array.isArray。
标签: javascript html arrays for-loop