<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>潔靜精微 &#187; table</title>
	<atom:link href="http://julabs.me/blog/tags/table/feed/" rel="self" type="application/rss+xml" />
	<link>http://julabs.me/blog</link>
	<description>想努力创造完美的东西，必须具备心灵的纯洁，同时富于宗教精神。</description>
	<lastBuildDate>Wed, 18 Jan 2012 06:34:33 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.0.4</generator>
		<item>
		<title>表格排序代码</title>
		<link>http://julabs.me/blog/front/table-sort/</link>
		<comments>http://julabs.me/blog/front/table-sort/#comments</comments>
		<pubDate>Mon, 15 Nov 2010 14:34:57 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[前端]]></category>
		<category><![CDATA[sort]]></category>
		<category><![CDATA[table]]></category>
		<category><![CDATA[排序]]></category>
		<category><![CDATA[表格]]></category>

		<guid isPermaLink="false">http://julabs.me/blog/?p=290</guid>
		<description><![CDATA[这里的代码是根据《JavaScript高级程序设计》第12章里面的示例重新整合的，关于Array的sort的用法可以看下《JavaScript高级程序设计》第12章，也可以看下《JavaScript sort()方法》。 下面是详细代码和注释： /** * 表格排序 */ var sortTable = { /** * 转换函数 * 可以将 String 类型的变量转成 Int,Float,Date 的格式 * @param {String} v 原来的值 * @param {String} tp 值类型 int,float,date,默认为 string */ convert:function(v,tp){ switch(tp){ case 'int': return parseInt(v); case &#8230; <a href="http://julabs.me/blog/front/table-sort/">继续阅读 <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p>这里的代码是根据<a href="http://book.douban.com/subject/1869705/" target="_blank">《JavaScript高级程序设计》</a>第12章里面的示例重新整合的，关于<code>Array</code>的<strong>sort</strong>的用法可以看下<a href="http://book.douban.com/subject/1869705/" target="_blank">《JavaScript高级程序设计》</a>第12章，也可以看下<a href="http://www.w3school.com.cn/js/jsref_sort.asp" target="_blank">《JavaScript sort()方法》</a>。</p>
<p>下面是详细代码和注释：</p>
<pre><code class="javascript">/**
 * 表格排序
 */
var sortTable = {
	/**
	 * 转换函数
	 * 可以将 String 类型的变量转成 Int,Float,Date 的格式
	 * @param {String} v 原来的值
	 * @param {String} tp 值类型 int,float,date,默认为 string
	 */
	convert:function(v,tp){

		switch(tp){
			case 'int':
				return parseInt(v);
			case 'float':
				return parseFloat(v);
			case "date":
				// IE6 只认 yyyy/mm/dd hh:mm:ss的格式
				return new Date(Date.parse(v.replace(/\-/g,'/')));
			default:
				return v.toString().toLowerCase();
		}
	},

	/**
	 * 对比两个行
	 * @requires sortTable.convert
	 * @param {Int} ic 排序要参照的表格序号
	 * @param {String} dt 值类型 int,float,date,默认为 string
	 */
	compareTrs:function(ic,dt){

		/**
		 * 返回一个新的对比函数
		 * @requires sortTable.convert
		 * @param {Object} r1 第一行
		 * @param {Object} r2 第二行
		 */
		return function(r1,r2){
			var v1 , v2;
			// 如果节点拥有 data-sort 属性
			// 则根据 data-sort 属性进行排序
			if(r1.cells[ic].getAttribute('data-sort')){
				v1 = sortTable.convert(r1.cells[ic].getAttribute('data-sort'),dt);
				v2 = sortTable.convert(r2.cells[ic].getAttribute('data-sort'),dt);
			}else{
				// 如果节点没有 data-sort 属性
				// 则根据节点的 nodeValue 值进行排序
				v1 = sortTable.convert(r1.cells[ic].firstChild.nodeValue,dt);
				v2 = sortTable.convert(r2.cells[ic].firstChild.nodeValue,dt);
			}
			// 默认降序排列
			if(v1 &gt; v2){
				return -1;
			}else if(v1 &lt; v2){
				return 1;
			}else{
				return 0;
			}

		};
	},

	/**
	 * 表格排序函数
	 * 这个表格要有 thead 和 tbody
	 * @requires sortTable.compareTrs
	 * @param {String} tid 要排序的表格 ID
	 * @param {Int} ic 排序要参照的表格序号
	 * @param {String} tp 值类型 int,float,date,默认为 string
	 */
	sortTr:function(tid,ic,dt){
		var tb = document.getElementById(tid), // 获得表格 table
		bd = tb.tBodies[0], // 获得表格的tbody
		trs = bd.rows, // 获得表格 tbody 下的行集合
		arr = [], // 用于存储 tr 行集合的列表
		i=l=trs.length, // 获得 tr 行集合的个数
		fg = document.createDocumentFragment(), // 临时片断
		st=tb.getAttribute('data-sort');

		// 将 tr 行存储到 arr 中
		while(i--){
			arr[i] = trs[i];
		}
		// st 可能为 0 或者 NaN
		if(st!=null &amp;&amp; (parseInt(st)==ic)){
			// 如果表格当前的排序号和 ic 相等
			// 表明已经按照这个属性排序过了
			// 反排序就可以了
			arr.reverse();
		}else{
			arr.sort(sortTable.compareTrs(ic,dt));
			tb.setAttribute('data-sort',ic);
		}

		for(i=0;i&lt;l;i++){
			fg.appendChild(arr[i]);
		}

		bd.appendChild(fg);

		tb.setAttribute('data-sort',ic);

		tb = bd = trs = arr = i = l = fg = null;

	}
};</code></pre>
<p><span id="more-290"></span></p>
<p>下面是代码的使用示例，记住要排序的表格必需拥有<code>tbody</code>这个元素，当点击<code>thead</code>里面的<code>th</code>时，<code>tbody</code>中的行就根据相应的列进行排序。注意我把触发行为的代码放在表格<code>thead</code>中的<code>th</code>里了。</p>
<pre><code class="html">&lt;table id=&quot;oTable&quot;&gt;
	&lt;thead&gt;
		&lt;tr&gt;
			&lt;th onclick=&quot;sortTable.sortTr('oTable',0,'date')&quot;&gt;时间&lt;/th&gt;
			&lt;th onclick=&quot;sortTable.sortTr('oTable',1,'string')&quot;&gt;姓名&lt;/th&gt;
			&lt;th onclick=&quot;sortTable.sortTr('oTable',2,'int')&quot;&gt;年龄&lt;/th&gt;
		&lt;/tr&gt;
	&lt;/thead&gt;
	&lt;tbody&gt;
		&lt;tr&gt;
			&lt;!--td data-sort=&quot;March 12, 2001 19:25:03&quot;&gt;2001 03 12&lt;/td--&gt;
			&lt;td data-sort=&quot;2001-03-12&quot;&gt;2001 03 12&lt;/td&gt;
			&lt;td&gt;jon&lt;/td&gt;
			&lt;td&gt;54&lt;/td&gt;
		&lt;/tr&gt;
		&lt;tr&gt;
			&lt;td data-sort=&quot;2001-11-12&quot;&gt;2001 11 12&lt;/td&gt;
			&lt;td&gt;amy&lt;/td&gt;
			&lt;td&gt;32&lt;/td&gt;
		&lt;/tr&gt;
		&lt;tr&gt;
			&lt;td data-sort=&quot;1983-08-16&quot;&gt;1983 08 16&lt;/td&gt;
			&lt;td&gt;tom&lt;/td&gt;
			&lt;td&gt;56&lt;/td&gt;
		&lt;/tr&gt;
		&lt;tr&gt;
			&lt;td data-sort=&quot;2007-06-14&quot;&gt;2007 06 14&lt;/td&gt;
			&lt;td&gt;jim&lt;/td&gt;
			&lt;td&gt;24&lt;/td&gt;
		&lt;/tr&gt;
		&lt;tr&gt;
			&lt;td data-sort=&quot;1998-07-16&quot;&gt;1998 07 16&lt;/td&gt;
			&lt;td&gt;Lucy&lt;/td&gt;
			&lt;td&gt;18&lt;/td&gt;
		&lt;/tr&gt;
	&lt;/tbody&gt;
&lt;/table&gt;</code></pre>
]]></content:encoded>
			<wfw:commentRss>http://julabs.me/blog/front/table-sort/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Table的“min-height”属性</title>
		<link>http://julabs.me/blog/front/min-height-of-table/</link>
		<comments>http://julabs.me/blog/front/min-height-of-table/#comments</comments>
		<pubDate>Mon, 05 Jul 2010 15:39:15 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[前端]]></category>
		<category><![CDATA[css]]></category>
		<category><![CDATA[min-height]]></category>
		<category><![CDATA[table]]></category>

		<guid isPermaLink="false">http://julabs.me/blog/?p=242</guid>
		<description><![CDATA[今天在制做页面时，需要对table元素里的td设置min-height属性，但怎么设置都没有效果。我想难道是和position属性一样，不能对table元素设置吗？搜索了一下这才恍然大悟，原来对于table元素，如th、td来说，使用height属性就等效于min-height属性了，如果表格内容高度大于所设定的高度值，表格会自己扩大高度以适应内容的。如： td{ height:300px; /* 等效于普通元素的 min-height */ }]]></description>
			<content:encoded><![CDATA[<p>今天在制做页面时，需要对<strong>table</strong>元素里的<strong>td</strong>设置<strong>min-height</strong>属性，但怎么设置都没有效果。我想难道是和<strong>position</strong>属性一样，不能对<strong>table</strong>元素设置吗？搜索了一下这才恍然大悟，原来对于<strong>table</strong>元素，如<strong>th</strong>、<strong>td</strong>来说，使用<strong>height</strong>属性就等效于<strong>min-height</strong>属性了，如果表格内容高度大于所设定的高度值，表格会自己扩大高度以适应内容的。如：</p>
<pre><code class="css">td{
    height:300px; /* 等效于普通元素的 min-height */
}
</code></pre>
]]></content:encoded>
			<wfw:commentRss>http://julabs.me/blog/front/min-height-of-table/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>给表格的列设置样式</title>
		<link>http://julabs.me/blog/front/table-colgroup-style/</link>
		<comments>http://julabs.me/blog/front/table-colgroup-style/#comments</comments>
		<pubDate>Sun, 27 Dec 2009 10:53:11 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[前端]]></category>
		<category><![CDATA[colgroup]]></category>
		<category><![CDATA[css]]></category>
		<category><![CDATA[table]]></category>

		<guid isPermaLink="false">http://julabs.me/blog/?p=128</guid>
		<description><![CDATA[看了《TheBest-Practice Guide to XHTML and CSS》一书，里面提到了个“colgroup”列组的属性，觉得很有用，在这里记一下，以备不时之需。在这里要感谢htmldog给我们免费提供了一本基础详细实用的好书。 虽然table是按行组建的，但你仍然可以通过“colgroup”和“col”两个元素来寻址列或一组列，还能给它们设置属性，比如“class”。 你可以通过“bolgroup”来给一列设置属性，也可以使用“span”来给一组列设置属性，而“span”的用法和“rowspan”、“colspan”的用法是一样的。看下面的实例代码： &#60;table&#62; &#60;caption&#62;Caption&#60;/caption&#62; &#60;colgroup&#62; &#60;col /&#62; &#60;col class="alternative" /&#62; &#60;col span="2" class="alternative" /&#62; &#60;/colgroup&#62; &#60;tr&#62; &#60;td&#62;This&#60;/td&#62; &#60;td&#62;That&#60;/td&#62; &#60;td&#62;The other&#60;/td&#62; &#60;td&#62;Lunch&#60;/td&#62; &#60;td&#62;Lunch&#60;/td&#62; &#60;/tr&#62; &#60;tr&#62; &#60;td&#62;Ladybird&#60;/td&#62; &#60;td&#62;Locust&#60;/td&#62; &#60;td&#62;Lunch&#60;/td&#62; &#60;td&#62;Lunch&#60;/td&#62; &#60;td&#62;Lunch&#60;/td&#62; &#60;/tr&#62; &#60;/table&#62; 不过目前在colgroup中的样式仅支持borders，backgrounds，width和visibility属性。]]></description>
			<content:encoded><![CDATA[<p><a href="http://www.htmldog.com/book/" target="_blank" class="img"><img alt="The Best-Practice Guide to XHTML and CSS" src="http://www.htmldog.com/r/book.jpg" height="137" width="110" /></a>看了<a title="《The Best-Practice Guide to XHTML and CSS》" href="http://www.htmldog.com/book/" target="_blank">《TheBest-Practice Guide to XHTML and CSS》</a>一书，里面提到了个“colgroup”列组的属性，觉得很有用，在这里记一下，以备不时之需。在这里要感谢<a title="htmldog" href="http://www.htmldog.com/" target="_blank">htmldog</a>给我们免费提供了一本基础详细实用的好书。</p>
<p>虽然table是按行组建的，但你仍然可以通过“colgroup”和“col”两个元素来寻址列或一组列，还能给它们设置属性，比如“class”。</p>
<p>你可以通过“bolgroup”来给一列设置属性，也可以使用“span”来给一组列设置属性，而“span”的用法和“rowspan”、“colspan”的用法是一样的。看下面的实例代码：</p>
<pre><code class="html">&lt;table&gt;
	&lt;caption&gt;Caption&lt;/caption&gt;
	&lt;colgroup&gt;
		&lt;col /&gt;
		&lt;col class="alternative" /&gt;
		&lt;col span="2" class="alternative" /&gt;
	&lt;/colgroup&gt;
	&lt;tr&gt;
		&lt;td&gt;This&lt;/td&gt;
		&lt;td&gt;That&lt;/td&gt;
		&lt;td&gt;The other&lt;/td&gt;
		&lt;td&gt;Lunch&lt;/td&gt;
		&lt;td&gt;Lunch&lt;/td&gt;
	&lt;/tr&gt;
	&lt;tr&gt;
		&lt;td&gt;Ladybird&lt;/td&gt;
		&lt;td&gt;Locust&lt;/td&gt;
		&lt;td&gt;Lunch&lt;/td&gt;
		&lt;td&gt;Lunch&lt;/td&gt;
		&lt;td&gt;Lunch&lt;/td&gt;
	&lt;/tr&gt;
&lt;/table&gt;</code></pre>
<p>不过目前在<strong>colgroup</strong>中的样式仅支持<strong>borders</strong>，<strong>backgrounds</strong>，<strong>width</strong>和<strong>visibility</strong>属性。</p>
]]></content:encoded>
			<wfw:commentRss>http://julabs.me/blog/front/table-colgroup-style/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>

