我最初的目的是创建具有动态名称的变量,以避免重复声明var randName = document.createElement("div");
。
所以,当时,我只是在学习JS对象,我想我可以这样做:
var createMe = function(){},
elemsArray = ['a', 'b', 'c', 'd', 'e'],
numbersArray = ['1', '2', '3', '4', '5'],
togetherArray = elemsArray.concat(numbersArray),
i;
for(i = 0; i < togetherArray.length; i++)
{
createMe.prototype[togetherArray[i]] = document.createElement("div");
createMe.prototype[togetherArray[i]].setAttribute("id", togetherArray[i]);
}
var awesomeObject = new createMe;
现在,我可以通过awesomeObject.body引用HTML元素,并操纵它们,将它们插入DOM等等...... 有了这个,我保存了许多代码行,并且它可以工作,并且可以满足我的需求,但是,我想知道我做的事情是不是违反任何规则,是否很慢,或者是最好的方法。任何帮助表示赞赏。谢谢。
答案 0 :(得分:0)
如果您只是在寻找有关实现目标的简单方法的建议,我可以提出以下建议:
var createMe = function(ids) {
elems = {};
ids.forEach(function(id) {
elems[id] = '<div id="'+id+'"></div>';
}
return elems;
}
var awesomeObject = createMe(['a','b','c','d','e'].concat([1,2,3,4,5]));
当然,这会将元素作为字符串返回。我发现在创建节点时使用HTML字符串通常更容易,只使用DOM API来改变现有节点。通过insertAdjacentHTML向页面添加字符串节点是有效的,如果您希望转换此字符串intro节点的某些步骤$.parseHTML可用,以及帮助函数完成相同的操作。