2007-06-25

web页面实现tab分页

最近做一个外包的项目《书店》,用户要求在网页上实现Tab分页的效果。
上www.open-open.com上找,找到叫"ditchnet-tabs-taglib_0.8"的JSP标签库。
下载bin文件和souce看了一下,原理就是动态生成HTML,然后结合JavaScript和
CSS,制作Tab分页的效果。

第一次体会到开源的好处,不但能快速免费得到比较实用的功能,而且你可以根据
自己的用处,自行更改源代码,构成自己想要的东东!!

我需要附加另外的功能,并没有提供:一个是增加双击关闭当前Tab页,另一个就
是能点击特定的链接,新增一个Tab页,如果有重复名称的就不新增了,直接切换
到那个Tab显示。

现讲碰到的问题总结一下:
1、javascript动态生成HTML节点,并动态为节点的属性、事件、样式表……等赋值
用代码说明即可:
org.ditchnet.jsp.TabUtils.newTab = function (title, index) {
var tabNode = document.createElement("div");//创建节点
var spanNode = document.createElement("span");
var aNode = document.createElement("a");
var textNode = document.createTextNode(title);

tabNode.id = "pane_" + index + "-tab";
tabNode.onclick = function(){ //设置事件
org.ditchnet.jsp.TabUtils.tabClicked(event);
tabContainerListener(new org.ditchnet.jsp.TabEvent(this));
};
tabNode.ondblclick = function(){
org.ditchnet.jsp.TabUtils.tabDblClicked(event);
tabContainerListener(new org.ditchnet.jsp.TabEvent(this));
};
tabNode.className = "ditch-tab ditch-focused";
spanNode.className = "ditch-tab-bg-left";
aNode.href = "#";
aNode.onclick = function(){
return false;
};

aNode.appendChild(textNode);//需要说明一下,之前打算用innerHTML或者
innerText来实现,但是不知道 IE下出错,只能换成W3C的标准来书写了
tabNode.appendChild(spanNode);
tabNode.appendChild(aNode);//添加节点
return tabNode;
};

org.ditchnet.jsp.TabUtils.newTabPane = function (url, index) {
var tabPaneNode = document.createElement("div");
var iframeNode = document.createElement("iframe");

tabPaneNode.id = "pane_" + index; //设置属性
tabPaneNode.className = "ditch-tab-pane";
tabPaneNode.style.display = ""; //设置样式
iframeNode.id = "iframe_" + index;
iframeNode.src = url;
iframeNode.marginWidth = "0";
iframeNode.marginHeight = "0";
iframeNode.frameBorder = "0"; //需要注意的是大小写问题!之前我用
frameborder,导致生成出来的iframe始终都有边框。害得我花了不少时间调试才发
现这个问题的。
iframeNode.border = "0";
iframeNode.scrolling = "auto";
iframeNode.style.width = "100%"
iframeNode.style.height = "450px";//设置样式
iframeNode.align = "center";
iframeNode.className = "ditch-tab-pane-wrap";
iframeNode.className = "ditch-tab-pane";
iframeNode.name = "pane_" + index;

tabPaneNode.appendChild(iframeNode);
return tabPaneNode;
};

顺便把代码也打包上传了,呵呵
OK,到此为止:-)

2007-06-06

发现JsJava――以Java的形式处理JavaScript的问题

今天由于要查找关于JavaScript格式化日期的例子,无意中发现JsJava这个JavaScript库,这是一个模仿Java结构的JavaScript程序API集,里面包含了各种有用的方法!

本来复杂的格式化时间问题,很简单的解决了:
<code>
function formatDate(){
var now = new Date();
alert(now);
var df = new DateFormat();
df.applyPattern("yyyy-MM-dd HH:mm:ss");
var formatedStr = df.format(now);
alert(formatedStr);
}
</code>


<a href="http://www.jsjava.com/"&gt;访问JsJava的网站</a>