Macji Pro2010

记录一些应该记录的东东

开始接触microformats吧

June 23, 2008 - by Macji - HTML/CSS/JS/PHP - microformats

两年前,如果你在谈论microformats(微格式) ,那么你是一个很“前卫”的人。两个月前,如果你开始谈论microformats,那么你一定比我知道的更多,那时我还不知道它是虾米。今天,你还不知道microformats是什么的话,那么你该开始关注它了。


如果你可以查看源文件,你会发现我博客上能用到microformats的地方,我都用了。我坚信未来几年,microformats将是新的热点。


那么,microformats是到底是什么呢?

一种通过在网页中加入数据项目,而使相关信息可由软件提取、搜索、保存、引用或合并的方法


更技术化的表述是:仅使用标准(X)HTML以及一套通用类名称的语义置标项目


更更技术化的表述是:一堆命名约定

这里没有例子,具体文档和例子请查看官方wiki

没有评论哦,马上发表评论»

javascript创建不重复随机数

June 1, 2008 - by Macji - HTML/CSS/JS/PHP - javascript

有这么一个需求:CMS在页面一容器内输出50个a标签(该容器为display:none),要我随机从这容器取出10个a,放到另一容器内。


本能反应:建立一个随机数组,然后clone节点,放到另一容器去。但这样会把重复的a节点放进去。


随机数不重复,那就得用生成一个随机数,放到数组去,再生成一个和之前的数组一个一个比过去,如果重复就重新生成。我的最初想法。


(function(){
	var obj = $("hotClick");//容器,里面有个隐藏的p,他里面有50个a
	var links = obj.getElementsByTagName("a"), r = [], temp;
	var randomNum = function(n, p){
		var p = p || -1, newNum = Math.floor(Math.random() * (n + 1));
		for(var i = 0; i < r.length; i++){
			if(r[i] == newNum)
				return randomNum(n, newNum);
			}
			return newNum;
		}
	}
	for (var i = 0; i < 10; i++){
		r.push(randomNum(50));
		temp = links[r[i]].cloneNode(true);
		obj.appendChild(temp);
	};
})();

虽然这样可行,但效率比较差劲,于是google了一下,看到无忧脚本一个帖子。于是我想到了,先生成0到50的数组,然后对数组随机排序,最后取输出的0到10拿出来用。太帅了。我对帖子上的方法简单的修改。


(function(){
	Array.prototype.riffle = function(){
		this.sort(function(){
			return Math.random() > 0.5 ? -1 : 1;
		});
	}
	var obj = $("hotClick");
	var links = obj.getElementsByTagName("a"), r = [], temp;
	for(var i = 0; i <= 50; i++)r[i] = i;
	r.riffle();
	for (i = 0; i < 10; i++){
		temp = links[r[i]].cloneNode(true);
		obj.appendChild(temp);
	}
})();

没有评论哦,马上发表评论»