`
ytrgmj
  • 浏览: 21968 次
  • 来自: ...
文章分类
社区版块
存档分类
最新评论

顺手写了个小轮子

阅读更多
[size=large]周末在家里写程序,要用js将json格式的数据{name:'游戏1',url:'http://www.zaobao.com',imgUrl:'img/confirm.gif'},转化成以下html

<li>
	<a href="http://www.zaobao.com">
		<img src="img/confirm.gif">
		<span>游戏1</span>
	</a>
</li>

用dom实现
var li = document.createElement("li")
var a = document.createElement("a");
a.href = pojo.url;
var img = document.createElement("img");
img.src = pojo.imgUrl;
var span = document.createElement("span");
span.innerHTML = pojo.name;
a.appendChild(img);
a.appendChild(span);
li.appendChild(a);
return li;

尼玛啊,才4个标签,代码居然需要11行。是可忍,叔叔也不可忍。用拼凑html的方法,虽然代码简单一点,但是html复杂了,也很难维护。
想写个类简化一下。思路是搞个html dsl(面向领域的语言)出来。于是写了个tag类,刚才那段代码就变成了
var li = new Tag("li");  //构建一个li标签
var a = li.a().attr("href",pojo.url); //在li中方一个a标签 ,href是pojo的url
a.img().attr("src",pojo.imgUrl); //在a标签中放img
a.span(pojo.name); //在a标签中放span
return li.toDom(); //返回li标签的dom对象

定义一个div就可以这样写
var tag = new Tag("div");
tag.html("google");
tag.style("color","red")
document.getElementById("d1").innerHTML = tag.toHtml();


定义ul下有3个li
var ul = new Tag("ul");
ul.li('aaa');
ul.li(2).style('color','red');
ul.li(3);
document.getElementById("d2").innerHTML = ul.toHtml();

document.getElementById("d3").appendChild(ul.toDom());


定义一个5行的table变成了
var table = new Tag("table");
for(var i=1;i<5;i++){
	var tr = table.tr();
	tr._td(1+i)
		._td(2+i+"a")
		._td(3+i)
		._td(4+i)
		._td(5+i);
}
document.getElementById("d6").innerHTML = table.toHtml();
document.getElementById("d7").appendChild(table.toDom());

写完以后,自我感觉十分良好,比从头构建dom或者拼html强多了。唯一不知道的是这个小轮子前人有没有写过?
代码见附件


[/size]
分享到:
评论
1 楼 习惯在马桶上思考 2012-05-14  

相关推荐

    appium安装文档

    appium的设计哲学是这样的: ...3,不要为了移动端的自动化测试而重新发明轮子,重新写一套惊天动地的api;也就是说webdriver协议里的api已经够好了,拿来改进一下就可以了; 4,移动端自动化测试应该是开源的;

    对python中的高效迭代器函数详解

    python中内置的库中有个itertools,可以满足我们在编程中绝大多数需要迭代的场合,当然也可以自己造轮子,但是有现成的好用的轮子不妨也学习一下,看哪个用的顺手~ 首先还是要先import一下: #import itertools ...

    前渗透信息探测工具集-子域名.zip

    因此想实现只要运行一个工具就能尽可能多的子域名,并且能方便自由定制的顺手工具,于是浏览对比了如下几款工具,根据他们的优缺点总结出一份个人合适的子域名工具需求:1.子域名2.wy域名3.提莫4.敲门5.subdomain36....

    产品经理小技术:图片素材随手找,原型设计快又好

    画图——这项古老而精细的做法,是一代代产品狗们得以传承的立足之本...本文将介绍一些产品经理快速找到顺手图片资源的小技巧,当然,这些技巧也可供UI射鸡湿参考。另外开发人员如果也搞一搞,下次资源图还没出来时你就

    HoServer:基于Node.js Express框架的开箱即用的应用服务器支架

    顺手点个Star,支持我们更好发展并持续维护此项目,感谢! 简介 HoServer是基于Node.js开发开箱即用的后台服务和管理平台脚手架,可视化对象定义,一行代码实现增删改查所有接口,内置用户,权限等基本功能。基于...

    更新

    梨管理员认为|||项目简介Pear Admin Think基于thinkphp6的快速开发平台,通过简单的代码生成功能,可以快速构建你的功能业务,努力成为最顺手的轮子。环境要求PHP&gt; = 7.1.0 MySQL&gt; = 5.7.0(需支持innodb引擎) ...

Global site tag (gtag.js) - Google Analytics