js动态生成html

big_student 2011-05-31 10:31:16
标题可能描述不清楚,我的意思是,现在我很多js里都有很多的createElement与appendChild这样的js代码,来动态生成一些html元素,例如:

<DIV class=header>
<H4>100</H4></DIV>
<DIV class=dialog>100</DIV>
<DIV>100</DIV>

于是就有大量类似这样的js代码:

var xxx = document.createElement("div");
xxx.className = "xxx";
xxx.xxx
.......
xxx.appendChild(xxx);

这样当这个div里面的元素很多时,这样的代码就很多,而且维护也不方便。我也是开始没多久学js,有什么好的方法来减少这样重复的代码量,和提高代码维护的效率。 现在我的想到的是使用模板,把这样的html提取出来做成模板,然后相应的地方填空即可。大家还有什么好方法和建议,请教下!
...全文
1374 11 打赏 收藏 转发到动态 举报
写回复
用AI写文章
11 条回复
切换为时间正序
请发表友善的回复…
发表回复
wisdomoon 2012-07-26
  • 打赏
  • 举报
回复
如果是我会写一个组件
温柔哥 2012-07-26
  • 打赏
  • 举报
回复
综合大家的观点,其实肯定是拼接的好些,你也说了 这个div下面有很多元素了..而且是动态的,那样的话每次都要操作一下这个div来append 那样效率肯定不好,如果用拼接的把全部内容拼起来后 就只用append一次了 那样肯定效果高多了..最起码从速度来讲这样快多了..维护其实是要跟你的书写习惯有关的,你写的规范规整 加点注释 就很好维护了,像前面说的封装成一个方法,然后多次调用,这样做其实很好,但是面对你这个情况,还是应该以效率为重.
汉尼拔 2011-05-31
  • 打赏
  • 举报
回复
写一些工具函数就好了 啊
xiaoYmark 2011-05-31
  • 打赏
  • 举报
回复
而且dom这么操作html效率很低
chchawen 2011-05-31
  • 打赏
  • 举报
回复
[Quote=引用 4 楼 chchawen 的回复:]
十分不建议按上面两位的说法做,那样如果innerHTML的内容过多会造成浏览器崩溃。
建议将你所有可以重复用到的标签封装成一个js对象
例如<input></input>
var input= function(name,id,value){
var ip = document.createElement("div");
ip.name = name;
ip.id = id……
[/Quote]
忘了一点,这样你就可以直接把你创建好的标签对象放入容器标签内
例如
var div = document.createElement("div");
div.appendChild(input);
希望给分
chchawen 2011-05-31
  • 打赏
  • 举报
回复
十分不建议按上面两位的说法做,那样如果innerHTML的内容过多会造成浏览器崩溃。
建议将你所有可以重复用到的标签封装成一个js对象
例如<input></input>
var input= function(name,id,value){
var ip = document.createElement("div");
ip.name = name;
ip.id = id;
ip.value = value;
return ip;
}
具体需要的参数,还有样式需要你自己斟酌
这种面向对象的js写法希望对你js学习有帮助

weike021996 2011-05-31
  • 打赏
  • 举报
回复
学习 xx.innerHTML="<div>**********</div>"
a260881071 2011-05-31
  • 打赏
  • 举报
回复
你可以将所有的HTML代码放在一个长串里就像一楼所说的。

然后就是按你的原来的做法那备注。

思路清晰,排版整齐的话,不会乱的。




--------------------------------------帅签分割线-------------------------------------------------
孟子E章 2011-05-31
  • 打赏
  • 举报
回复
如果你的html没有规律,你可以使用xx.innerHTML="<div>xxxxxxx</div>"这样的方法
乌鸦不会飞 2011-05-31
  • 打赏
  • 举报
回复
我也在做js动态生成html
学习了。。
猿敲月下码 2011-05-31
  • 打赏
  • 举报
回复
如1L所说 直接事先用字符串拼接好

然后innerHTML=字符串 即可

87,907

社区成员

发帖
与我相关
我的任务
社区描述
Web 开发 JavaScript
社区管理员
  • JavaScript
  • 无·法
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧