源代码(JS文件)
var faisunMenu_openedfolderimage_src="images/openedfolder.gif";//自定义图片路径
var faisunMenu_closedfolderimage_src="images/closedfolder.gif";//自定义图片路径
var faisunMenu_menufileimage_src="images/menufile.gif";//自定义图片路径
var faisunMenu_treetext=new Array();
var faisunMenu_treeurl=new Array();
var faisunMenu_treeurltarget=new Array();
var faisunMenu_treeNum=0;
document.write("<style type='text/css'>.blockhide{display:none;} .blockmove{overflow: hidden;height:1px;display:block;} .blockshow{overflow: visible; display:block;} .hideme{overflow: visible;display:none;} .showme{overflow: visible;display:block;} .faisunMenu td{font-size:13px;} </style>");
window.document.body.onselectstart=new Function("return false");
function outinit(itemNo,dir,blockheight){ //缩小一个div的高度
var subfiles=document.getElementById("item"+itemNo);
if(blockheight==0){
subfiles.className="blockshow";
subfiles.style.height='';
blockheight=parseInt(subfiles.offsetHeight);
if(dir>0) subfiles.className="blockmove";
}
var outinspeed=blockheight/10;
var nowheight=parseInt(subfiles.offsetHeight)+outinspeed*dir;
if(nowheight<=0){
subfiles.className="blockhide";
return;
}else{
subfiles.className="blockmove";
}
if(nowheight>=blockheight && dir>0){
subfiles.className="blockshow";
subfiles.style.height='';
return;
}
subfiles.style.height=nowheight;
subfiles.scrollTop=blockheight;
parentsresize(subfiles);
setTimeout("outinit("+itemNo+","+dir+","+blockheight+")",15);
}
function getcookies(c_name)
{
if(document.cookie.length>0)
{
c_start=document.cookie.indexOf(c_name+"=")
if(c_start!=-1)
{
c_start=c_start+c_name.length+1
c_end=document.cookie.indexOf(";",c_start)
if (c_end==-1) {c_end=document.cookie.length}
return unescape(document.cookie.substring(c_start,c_end))
}
else
{
return null;
}
}
}
function setcookies(c_name,value,expiredays)
{
var exdate=new Date();
exdate.setTime(exdate.getTime()+expiredays*24*60*60*1000);
document.cookie=c_name+ "=" +escape(value)+
((expiredays==null) ? "":";expires="+exdate.toGMTString());
}
function pdshow()
{
var i=getcookies("cc").split('|');
if(i!=null&&i[0]>1)
{
if(i[1]<3)
{
for(var j=1;j<i[1];j++)
{
var obj=document.getElementById("item"+(i[0]-j));
if(obj!=null)
{
obj.className="blockshow";
document.images["openedfolderimage"+(i[0]-j)].className="showme";
document.images["closedfolderimage"+(i[0]-j)].className="hideme";
}
document.getElementById("item"+i[0]).className="blockshow";
document.images["openedfolderimage"+i[0]].className="showme";
document.images["closedfolderimage"+i[0]].className="hideme";
}
}
else
{
for(var j=1;j<i[0];j++)
{
var obj=document.getElementById("item"+(i[0]-j));
if(obj!=null)
{
obj.className="blockshow";
document.images["openedfolderimage"+(i[0]-j)].className="showme";
document.images["closedfolderimage"+(i[0]-j)].className="hideme";
}
document.getElementById("item"+i[0]).className="blockshow";
document.images["openedfolderimage"+i[0]].className="showme";
document.images["closedfolderimage"+i[0]].className="hideme";
}
}
}
}
function setco(value)
{
setcookies("cc",value,30);
}
function parentsresize(obj){ //缩小父类div的高度
do{
if(obj.className=="faisunMenu"){
break;
}
if(obj.className=="blockshow"){
obj.style.height="";
}
}while(obj=obj.parentElement);
}
function showhideit(itemNo){
var showfolder=document.images["openedfolderimage"+itemNo];
var hidefolder=document.images["closedfolderimage"+itemNo];
var subfiles=document.getElementById("item"+itemNo);
if(subfiles.className=="blockmove") {return;}
if(showfolder.className=="hideme") {
hidefolder.className="hideme";
showfolder.className="showme";
outinit(itemNo,1,0);
}
else {
showfolder.className="hideme";
hidefolder.className="showme";
outinit(itemNo,-1,0);
}
}
function addtree(text,url,target){
faisunMenu_treetext.push(text);
faisunMenu_treeurl.push(url?url:"");
faisunMenu_treeurltarget.push(target?target:"mainframe");
}
function getsubnum(text){ //算出前面有几个"-"号
var newtext=text.replace(/^-*/,"");
return text.length-newtext.length;
}
function createtree(){
faisunMenu_treeNum++;
var treestatus=new Array();
var treeendlayer=new Array();
var openedlayer=new Array();
var next_subnum=0;
var tempdiv="";
for(i=faisunMenu_treetext.length-1;i>=0;i--){ //从后面分析起,是否有为结束位置或有子树枝
var subnum=getsubnum(faisunMenu_treetext[i]);
treestatus[i]=0;
if(subnum<next_subnum){ //有子目录
treeendlayer[next_subnum]=0;
treestatus[i]+=1;
}
if(!treeendlayer[subnum]){ //结束位置
treeendlayer[subnum]=1;
treestatus[i]+=2;
}
//显然地,既有子目录又是结束位置时 treestatus[i]=3;
next_subnum=subnum;
}
var echo="<div class='faisunMenu'>";
for(i=0;i<faisunMenu_treetext.length;i++){
if(!faisunMenu_treetext[i]) continue;
var subnum=getsubnum(faisunMenu_treetext[i]);
var newtext=faisunMenu_treetext[i].replace(/^-*/*?/,"");
if(treestatus[i]==1||treestatus[i]==3){
var havechild=1;
}else{
var havechild=0;
}
if(treestatus[i]==2||treestatus[i]==3){
openedlayer[subnum]=0;
var barstatus=2;
}else{
openedlayer[subnum]=1;
var barstatus=1;
}
var showme=faisunMenu_treetext[i].match(/^-*/*/);
var openfold=(i==faisunMenu_treetext.length-1?0:faisunMenu_treetext[i+1].match(/^-*/*/));
var li=i-1;
if(i>0&&(treestatus[li]==1||treestatus[li]==3)){
echo += "<div id='item"+faisunMenu_treeNum+li+"' class='"+(showme?"blockshow":"blockhide")+"'>";
tempdiv=faisunMenu_treeNum+""+li;
}
echo += "<table border='0' cellspacing='0' cellpadding='0' "+(subnum==0?"height=50":"")+"><tr>/n";
for(j=1;j<subnum;j++){
echo += "<td width='20' height='25' valign=bottom></td>/n";
}
if(subnum>0){
echo += "<td width='20' height='25' valign=bottom></td>";
}
var clicktoshowhide=(havechild?" οnclick='showhideit("+faisunMenu_treeNum+""+i+")' style='cursor:pointer;' ":"οnclick='setco(/""+tempdiv+"|"+subnum+"/")'");
echo += "<td width='23' height='25' valign=middle "+clicktoshowhide+"><img name='openedfolderimage"+faisunMenu_treeNum+""+i+"' src='"+(havechild?faisunMenu_openedfolderimage_src:faisunMenu_menufileimage_src)+"' class='"+(openfold?"showme":"hideme")+"' width='9' height='10'><img name='closedfolderimage"+faisunMenu_treeNum+""+i+"' src='"+(havechild?faisunMenu_closedfolderimage_src:faisunMenu_menufileimage_src)+"' class='"+(openfold?"hideme":"showme")+"' width='14' height='15'></td>";
echo += "<td nowrap valign=bottom><a οnmοusedοwn='return false;' "+clicktoshowhide+" "+(faisunMenu_treeurl[i]?"href='"+faisunMenu_treeurl[i]+"'":"name='#'")+" target='"+faisunMenu_treeurltarget[i]+"'>"+newtext+"</a></td></tr></table>/n/n";
if(barstatus==2&&!havechild){
for(j=subnum;j>=0;j--){
if(!openedlayer[j]) echo += "</div>";else break;
}
}
}
echo += "</div>";
document.write(echo);
//清空列表以接受下一个菜单
pdshow();
faisunMenu_treetext=new Array();
faisunMenu_treeurl=new Array();
faisunMenu_treeurltarget=new Array();
}
/************************* /
例:
addtree("标题一","title1.htm");
addtree("-子目录一","sunmenu1.htm");
addtree("-子目录二","sunmenu1.htm");
createtree();
.可以建立多个目录树,重复上面的代码即可.
.addtree()三个参数:
(1) 显示的文本,有几个"-"号表位于几层,"-"号后紧跟"*"号表该层默认展开
(2) URL;
(3) target,URL的打开目标窗口,默认"forummainframe"
createtree();生成一个目录树,可以生成多个
/ ************************/
/* alert("表单中所有文本框通过校验!");
*/
function checkAllTextValid(form)
{
//记录不含引号的文本框数量
var resultTag = 0;
//记录所有text文本框数量
var flag = 0;
for(var i = 0; i < form.elements.length; i ++)
{
if(form.elements[i].type=="text")
{
flag = flag + 1;
//此处填写所要过滤的特殊符号
//注意:修改####处的字符,其它部分不许修改.
//if(/^[^####]*$/.test(form.elements[i].value))
if(/^[^/|"'<>]*$/.test(form.elements[i].value))
resultTag = resultTag+1;
else
form.elements[i].select();
}
}
/**
* 如果含引号的文本框等于全部文本框的值,则校验通过
*/
if(resultTag == flag)
return true;
else
{
alert("文本框中不能含有/n/n 1 单引号: ' /n 2 双引号: /" /n 3 竖 杠: | /n 4 尖角号: < > /n/n请检查输入!");
return false;
}
}
调用方法(html文件)
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=gb2312" />
<title>无标题文档</title>
<script language='JavaScript' src='menutree.js'></script>
</head>
<body>
<!--<div id="test"><textarea id="tt"></textarea></div>-->
<script language='JavaScript'>
addtree('-*柔性焊接夹具台系统');
addtree('--16系列');
addtree('---工作平台','1.html',"_blank");
addtree('---支撑件','2.html',"_blank");
addtree('---定位件','3.html',"_blank");
addtree('---压紧件','4.html',"_blank");
addtree('---锁紧件','#');
addtree('---附件及辅助材料','#');
addtree('--28系列');
addtree('---工作平台','#');
addtree('---支撑件','#');
addtree('---定位件','#');
addtree('---压紧件','#');
addtree('---锁紧件','#');
addtree('---附件及辅助材料','#');
addtree('-机床柔性夹具系统');
addtree('--通用机床定位系列','3.html');
addtree('--CNC机床定位系统','#');
addtree('-转角缸夹具系列');
addtree('--空压转角缸夹具','#');
addtree('--油压转角缸夹具','#');
addtree('--高压转角缸夹具','#');
addtree('--支撑缸','#');
addtree('--配件','#');
addtree('-肘节夹具系列');
addtree('--垂直式','#');
addtree('--水平式','#');
addtree('--推拉式','#');
addtree('--拉扣式','#');
addtree('--焊接组合式','#');
addtree('--气动式','#');
addtree('-钳夹具元件');
addtree('--大力钳','#');
addtree('--F夹钳','#');
addtree('--C夹钳','#');
addtree('--多功能夹钳','#');
addtree('--拔轮夹钳','#');
addtree('-工装调整垫片系列');
addtree('-工装定位导向系统');
addtree('-工装支架托快系列');
addtree('-对板工装元件');
addtree('-组合式铝结构元件');
addtree('-柔性组合测量系统元件');
createtree();
</script>
</body>
</html>