我正在摆脱所有innerHTML并转向严格生成的dom。原因如下。编写了一个用javascript编写的简单dom生成器,为我节省了大量的工作和击键。
我遇到的一个大问题是如何实现迭代器。我觉得它应该吐出一系列物体,有点像管道,封闭的环境会处理,但没有太多的快乐整合功能。这是我当前解决方案的一个例子
var div = E.div( '.myClass', 's.whiteSpace:nowrap', 'iterator': { 'set': { 'egg':'Scrambled Eggs', 'beer':'Chang Beer', 'yams':'Sweet Potatoes' }, 'function':function(v,l) { return E.radio({'name':'myRadio', 'value':v},l); } } } );
生成一个带有三个单选按钮的div。 E.div中的迭代器功能从“set”中拉出每个值/标签对,并将它们传递给“function”,然后处理函数的结果 - 在这种情况下,函数会生成一个单选按钮。
工厂文档加上更好的例子 http://code.google.com/p/chess-spider/wiki/DomFactory?ts=1302156868&updated=DomFactory
当前版本的javascript是 http://code.google.com/p/chess-spider/source/browse/http/scripts/factory.js
摆脱innerHTML(以及原始html)的原因:希望负责html的对象生成它以及使用闭包函数处理它的触发器。非常大的胜利,并且与引用的HTML无关。这使得整个功能包含在一个漂亮的“对象”中。
答案 0 :(得分:0)
这更像是一个指针。您似乎可以使用JavaScript模板引擎更轻松地完成任务。试试Handlebars.js,这里有一个good overview of Handlebars.js迭代,还有许多其他功能