Ответ 1
Прежде всего, не создавайте 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]));
Здесь демо. Вы также можете заметить, что set0
и set1
просачиваются в глобальный охват; если вы хотите создать своего рода ассоциативный массив, вы должны использовать объект:
var options = {
set0: ['Option 1', 'Option 2'],
set1: ['First Option', 'Second Option', 'Third Option']
};
И обращайтесь к ним так:
makeUL(options.set0);