Ok。下面就开始分析复杂component了。
复杂的component现在开始考虑这几个:
Table
Tree
Tab
Togglebutton
Menu
我们先来考虑前两个吧。
一个是table,一个是tree。
Table是这样的。
在HTML中,table为:
<table>
<!--- 如果有表头 ---->
<tr>
<th></th>
<th></th>
</tr>
<!--- 内容 ---->
<tr>
<td></td>
<td></td>
</tr>
</table>
其实table翻译起来很容易。因为有些只需要根据xml_parser就可以实现这个。
我先写一些关于tab的东西。
就是说,如何去实现这个tab。现在的想法是:tab base on table.
也就是这样的一个table:
Tab1 |
Tab2 |
。。。 |
|
|
<div id=xxx>
</div> |
这样,通过点击tab,执行js,然后用innerHTML来更新处理。
这里找到了一个不错的代码:
参见:tab_try1.html
这段代码可以很简单的应用为tab,使用的不是table而是用的<ul>以及div做的,相当不错,最后用css做了边框和link。特别的,他不用动态生成js代码,这个很重要,因为js代码不能动态生成,但是如果用table的话需要动态生成js代码的,来寻找div的identify。
这段代码如下:
function findA(obj)
{
TagA=obj.getElementsByTagName("a");
if (TagA.length>0)
return TagA[0];
}
function findContentDIV(obj)
{
TagDiv=obj.childNodes;
var arrDiv = new Array;
for(i=0;i<TagDiv.length;i++)
{
var objDiv = TagDiv[i];
var re = /div/i;
var arr = re.exec(objDiv.tagName);
if(arr != null)
{
if(arr.index == 0)
{
arrDiv.push(objDiv);
}
}
}
return arrDiv;
}
function chShift(o)
{
o.style.cursor="pointer";
var t=o.parentNode;
var tA=t.getElementsByTagName("a");
var tParent=t.parentNode;
var tParentDIV=findContentDIV(tParent);
for(i=0;i<tA.length;i++)
{
tA[i].className= null;
tParentDIV[i].style.display="none";
if(tA[i]==findA(o))
{
tA[i].className="on";
tParentDIV[i].style.display="block";
}
}
}
css:
ul
{
margin:0;
padding:0;
list-style-type:none;
height:24px;
}
ul li
{
float:left;
display:inline;
}
ul a
{
text-decoration: none;
border-top:1px solid #ddd;
border-bottom:1px solid #ccc;
border-left:1px solid #ddd;
border-right:1px solid #ddd;
display: block;
padding: 5px 0 3px;
margin-left:-1px;
width:258px;
font-weight: bold;
text-align:center;
line-height:15px;
color: #11449E;
}
a.on,a:hover
{
padding-top: 6px;
padding-bottom:3px;
width:259px;
border: 1px solid #ccc;
border-bottom: 0;
background:#DEEBFF;
}


















