gpt4 book ai didi

javascript - 创建一个
    并根据传递的数组填充它

转载 作者:IT王子 更新时间:2023-10-29 03:07:41 25 4
gpt4 key购买 nike

我已经设法根据矩阵中的一个指定数组(即数组中的数组)生成了一系列列表项。

我希望能够将一个变量(代表一个数组)传递给一个函数,这样它就可以吐出一个无序列表,其中根据传递给它的数组填充了列表项。

问题:

  • 该函数一次仅适用于一个数组
  • 它还在标记中生成逗号(大概是因为它将数组转换为字符串)

解决方案需要:

  • 假设DOM中不存在无序列表
  • 能够接受传入的不同数组(options[0]options[1] 等)
  • 生成不带逗号的列表项

JavaScript:

var options = [
set0 = ['Option 1','Option 2'],
set1 = ['First Option','Second Option','Third Option']
]

function makeUL(){
var a = '<ul>',
b = '</ul>',
m = [];

// Right now, this loop only works with one
// explicitly specified array (options[0] aka 'set0')
for (i = 0; i < options[0].length; i += 1){
m[i] = '<li>' + options[0][i] + '</li>';
}

document.getElementById('foo').innerHTML = a + m + b;
}

// My goal is to be able to pass a variable
// here to utilize this function with different arrays
makeUL();

jsFiddle

最佳答案

首先,不要通过字符串连接创建 HTML 元素。使用 DOM 操作。它更快、更干净、更不容易出错。仅此一项就可以解决您的问题之一。然后,让它接受任何数组作为参数:

var options = [
set0 = ['Option 1','Option 2'],
set1 = ['First Option','Second Option','Third Option']
];

function makeUL(array) {
// Create the list element:
var list = document.createElement('ul');

for (var i = 0; i < array.length; i++) {
// Create the list item:
var item = document.createElement('li');

// Set its contents:
item.appendChild(document.createTextNode(array[i]));

// Add it to the list:
list.appendChild(item);
}

// Finally, return the constructed list:
return list;
}

// Add the contents of options[0] to #foo:
document.getElementById('foo').appendChild(makeUL(options[0]));

Here's a demo. 您可能还想注意到 set0set1 正在泄漏到全局范围内;如果你打算创建一种关联数组,你应该使用一个对象:

var options = {
set0: ['Option 1', 'Option 2'],
set1: ['First Option', 'Second Option', 'Third Option']
};

然后像这样访问它们:

makeUL(options.set0);

关于javascript - 创建一个 <ul> 并根据传递的数组填充它,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11128700/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com