??xml version="1.0" encoding="utf-8" standalone="yes"?>国内精品久久久久久久影视简单,夜夜嗨av色综合久久久综合网,国产天堂在线播放视频http://www.aygfsteel.com/cyantide/category/36411.htmlzh-cnTue, 31 Aug 2010 22:32:44 GMTTue, 31 Aug 2010 22:32:44 GMT60dhtmlxtree相关资料 (转帖)http://www.aygfsteel.com/cyantide/archive/2010/08/17/329123.htmlcyantidecyantideTue, 17 Aug 2010 09:17:00 GMThttp://www.aygfsteel.com/cyantide/archive/2010/08/17/329123.htmlhttp://www.aygfsteel.com/cyantide/comments/329123.htmlhttp://www.aygfsteel.com/cyantide/archive/2010/08/17/329123.html#Feedback0http://www.aygfsteel.com/cyantide/comments/commentRss/329123.htmlhttp://www.aygfsteel.com/cyantide/services/trackbacks/329123.html
当然Q在使用q程中还是发C点点问题。下面是我整理的一些里面常用函数的说明Q只有简单的说明Q如果要看详l的说明Q自己查看原函数去)Q?br />
构造函?br /> dhtmlXTreeObject(htmlObject, width, height, rootId)//rootId 虚拟根节点,在界面上不会昄Q一般取?

replace IMG tag with background images - solve problem with IE image caching , not works for IE6 SP1
enableIEImageFix(mode)
析构函数
destructor()
实现l承
clone()
节点构造函?br /> dhtmlXTreeItemObject(itemId,itemText,parentObject,treeObject,actionHandler,mode)// mode - do not show images
从xml字符串加载树
loadXMLString(xmlString,afterCall)//afterCall - function which will be called after xml loading
从xml文g加蝲?br /> loadXML(file,afterCall)
新徏子节点,前三个参Cؓ必须?br /> insertNewItem(parentId,itemId,itemText,itemActionHandler,image1,image2,image3,optionStr,childs)
insertNewChild(parentId,itemId,itemText,itemActionHandler,image1,image2,image3,optionStr,childs)

节点展开与收~:[1-close 2-open]
_HideShow(itemObject,mode)
获取节点状态:0 - 没有子节? -1 - 节点合拢, 1 - 节点展开
_getOpenState(node)
getOpenState(itemId)
获取选中的节点Id
getSelectedItemId()
选中节点
_selectItem(node,e)
获取节点的index
getIndexById(itemId)
讄鼠标右键点击事g
setOnRightClickHandler(func)
讄鼠标点击事g
setOnClickHandler(func)
讄节点状态改变事?br /> setOnSelectStateChange(func)
讄允许动态加载xml文gQ异步加载)
setXMLAutoLoading(filePath)
讄checkbox点击事g
setOnCheckHandler(func)
讄节点展开/合拢事g
setOnOpenHandler(func)
讄节点开始展/合拢开事g
setOnOpenStartHandler(func)
讄节点展开/合拢l束事g
setOnOpenEndHandler(func)
讄节点双击事g
setOnDblClickHandler(func)
展开节点及下面所有子节点
_xopenAll(node)
//增加了不传递itemId的判断(1494Q?br /> openAllItems(itemId)//不传递itemId参数则合拢根节点
Ҏid获取节点
_globalIdStorageFind(itemId)
合拢节点及其下所有子节点
_xcloseAll(node)
//修改了原来逻辑的一个错误(1521Q?br /> closeAllItems(itemId)//不传递itemId参数则合拢根节点
点增加用戯定义的数?br /> //修正一个错误(1548Q?br /> setUserData(itemId,name,value)
获取用户自定义的数据
getUserData(itemId,name)
获取节点颜色
getItemColor(itemId)
讄节点颜色
setItemColor(itemId,defaultColor,selectedColor)
获取节点名称--(with HTML formatting, if any)
getItemText(itemId)
获取父节点id
getParentId(itemId)
更改节点id
changeItemId(itemId,newItemId)
标记被剪切的节点
doCut()
_脓被剪切的节点到新的父节点?br /> doPaste(itemId)
清空被剪切的节点
clearCut()
Ud节点
_moveNode(itemObject,targetObject)
允许三种状态的复选框Q全选、不选、部分选中Q?br /> enableThreeStateCheckboxes(mode)// 1 - on, 0 - off;
讄鼠标悬Q事g
setOnMouseInHandler(func)
讄鼠标U走事g
setOnMouseOutHandler(func)
讄是否允许昄树图?br /> enableTreeImages=function(mode)//1 - on, 0 - off
讄是否允许固定模式(对于昄复选框的界面美观一些,但没有水qx动条)
enableFixedMode(mode)// - 1 - on, 0 - off
是否昄复选框
enableCheckBoxes(mode, hidden)//mode 0/1 hidden 0/1
讄节点囄
setStdImages(image1,image2,image3)//a0 - image for node without childrens a1 - image for closed node a2 - image for opened node
讄是否昄树线
enableTreeLines(mode)
讄囄
setImageArrays(arrayName,image1,image2,image3,image4,image5)//image1 - line crossed image image2 - image with top line image3 - image with bottom line image4 - image without line image5 - single root image
展开当前节点Q一节)
_openItem(node)
openItem(itemId)
合拢当前节点Q一节)
closeItem(itemId)
获取节点的层节数
getLevel(itemId)
讄节点是否允许被合?br /> setItemCloseable(itemId,flag)//flag 0/1
对于展开节点q回子节Ҏ量,对于未加载子节点的节点(异步加蝲Q返回true
hasChildren(itemId)
获取节点下的子节Ҏ
_getLeafCount(itemNode)
讄节点名称
setItemText(itemId,newLabel,newTooltip)
获取节点tip
getItemTooltip(itemId)
h节点
refreshItem(itemId)
讄节点囄
setItemImage2(itemId, image1,image2,image3)//image1 - node without childrens image image2 - closed node image image3 - open node image
讄节点囄
setItemImage(itemId,image1,image2)//image1 - node without childrens image or closed node image (if image2 specified)  image2 - open node image (optional)
获取节点下所有子节点id以逗号分割
getSubItems(itemId)
getAllSubItems(itemId)
获取节点的所有子节点
_getAllScraggyItems(node)
获取选中节点的名U?-(with HTML formatting, if any)
getSelectedItemText()
讄节点的选中状?br /> setCheck(itemId,state)//state - checkbox state (0/1/unsure)
讄节点及所有子节点的选中状?br /> setSubChecked(itemId,state)
获取节点的选中状?return: node state (0 - unchecked,1 - checked, 2 - third state)
isItemChecked(itemId)
删除节点的所有子节点
deleteChildItems(itemId)
删除节点
deleteItem(itemId,selectParent) //selectParent - If true parent of deleted item get selection, else no selected items leaving in tree.
在节点下创徏一个节点,前三个参数是必须?br /> insertNewNext(itemId,newItemId,itemText,itemActionHandler,image1,image2,image3,optionStr,childs)
Ҏindex获取节点下子节点的id
getChildItemIdByIndex(itemId,index)//itemId 节点id
讄拖动事g
setDragHandler(func)
讄是否允许拖拽
//mode - enabled/disabled [ can be true/false/temporary_disabled - last value mean that tree can be D-n-D can be switched to true later ]
//rmode - enabled/disabled drag and drop on super root
enableDragAndDrop(mode,rmode)
讄是否允许IE~存
preventIECashing=function(mode)//mode - enable/disable random seed ( disabled by default )
讄是否允许选中节点名称高亮昄
enableHighlighting(mode)//mode - 1 - on, 0 - off
是否允许囄可点d拖拽(clickable and dragable)
enableActiveImages(mode)// mode - 1 - on, 0 - off
讄节点获得焦点
focusItem(itemId)
获取所有无子节点的节点id
getAllChildless()
getAllLeafs()
获取所有有子节点的节点id
getAllItemsWithKidsQ)
获取所有被选中节点idQ不包括W三中状态的节点Q部分选中的节点)
getAllChecked()
获取所有被选中节点idQ包括第三中状态的节点Q部分选中的节点)
getAllCheckedBranches()
获取节点下所有未选中的节点idQ不传递itemId表示从根节点开始查?br /> getAllUnchecked(itemId)
获取所有部分选中的节点idQ因部分子节炚w中而被选中的节点)
getAllPartiallyChecked()
讄节点样式
setItemStyle(itemId,style_string)
讄是否允许拖拽囄
enableImageDrag(mode)
set function called when tree item draged over another item
setOnDragIn(func)
讄拖拽是是否允许自动滚?br /> enableDragAndDropScrolling(mode)


补充说明Q加载树Ӟ必须保所有节点的id不重复,否则控g会ؓ重复id自动生成一个随机数Q原id+"_"+当前日期Q?br /> 增加了一个dhtmlXTreeExtend.js对原c进行扩展,增加了getAllCheckedLeaf()QgetAllUcCheckedLeaf()两个函数
修改?个bugQ?br /> 1 增加没有选中节点时执行展开/收羃选定节点时报没有parentId的bug
dhtmlXTreeObject.prototype.setSubChecked=function(itemId,state){
   if(itemId)
 {
  var sNode=this._globalIdStorageFind(itemId);
  this._setSubChecked(state,sNode);
  this._correctCheckStates(sNode.parentObject);
 }
}


1 增加了未传递itemId参数旉认从根节点展开
dhtmlXTreeObject.prototype.openAllItems=function(itemId)
   {
      if (itemId==window.undefined) itemId=this.rootId;
      var temp=this._globalIdStorageFind(itemId);
      if (!temp) return 0;
      this._xopenAll(temp);
   };

cyantide 2010-08-17 17:17 发表评论
]]>
struts2 ?fckeditor 整合http://www.aygfsteel.com/cyantide/archive/2010/06/28/324671.htmlcyantidecyantideMon, 28 Jun 2010 06:32:00 GMThttp://www.aygfsteel.com/cyantide/archive/2010/06/28/324671.htmlhttp://www.aygfsteel.com/cyantide/comments/324671.htmlhttp://www.aygfsteel.com/cyantide/archive/2010/06/28/324671.html#Feedback0http://www.aygfsteel.com/cyantide/comments/commentRss/324671.htmlhttp://www.aygfsteel.com/cyantide/services/trackbacks/324671.html
 1 import java.io.IOException;
 2 
 3 import javax.servlet.FilterChain;
 4 import javax.servlet.ServletException;
 5 import javax.servlet.ServletRequest;
 6 import javax.servlet.ServletResponse;
 7 import javax.servlet.http.HttpServletRequest;
 8 
 9 import org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter;
10 
11 public class StrutsAndFckFilter extends StrutsPrepareAndExecuteFilter {
12 
13     @Override
14     public void doFilter(ServletRequest request, ServletResponse response,
15             FilterChain chain) throws IOException, ServletException {
16         
17         HttpServletRequest httpRequest=(HttpServletRequest)request;
18         
19         if("/fckeditor/editor/filemanager/connectors".equals(httpRequest.getServletPath())){
20             chain.doFilter(request, response);
21         }else{
22             super.doFilter(request, response, chain);
23         }
24     }
25 
26 }
27 
2. 在classes目录d fckeditor.properties 文g
   内容?connector.userActionImpl=net.fckeditor.requestcycle.impl.EnabledUserAction

3. 修改web.xml
  
 1 <filter>
 2         <filter-name>struts2</filter-name>
 3         <filter-class>com.capinfo.cms.common.filter.StrutsAndFckFilter</filter-class>
 4     </filter>
 5 <servlet>
 6     <servlet-name>ConnectorServlet</servlet-name>
 7     <servlet-class>
 8         net.fckeditor.connector.ConnectorServlet
 9     </servlet-class>
10     <load-on-startup>1</load-on-startup>
11 </servlet>
12 
13 <servlet-mapping>
14     <servlet-name>ConnectorServlet</servlet-name>
15     <!-- Do not wrap this line otherwise Glassfish will fail to load this file -->
16     <url-pattern>/fckeditor/editor/filemanager/connectors/*</url-pattern>
17 </servlet-mapping>
lg所qC?整合完毕



cyantide 2010-06-28 14:32 发表评论
]]>
jquery boxy 使用 转蝲http://www.aygfsteel.com/cyantide/archive/2009/10/13/298030.htmlcyantidecyantideTue, 13 Oct 2009 02:20:00 GMThttp://www.aygfsteel.com/cyantide/archive/2009/10/13/298030.htmlhttp://www.aygfsteel.com/cyantide/comments/298030.htmlhttp://www.aygfsteel.com/cyantide/archive/2009/10/13/298030.html#Feedback0http://www.aygfsteel.com/cyantide/comments/commentRss/298030.htmlhttp://www.aygfsteel.com/cyantide/services/trackbacks/298030.html弹出对话框:


alert对话?br /> Boxy.alert("内容",动作);
$('#ask-actuator').click(function() {
  Boxy.alert("Alert! Alert!", function() { alert("Alert closed!"); });
  return false;
  });


认对话?br /> Boxy.confirm("内容",动作,{参数});
$('#ask-actuator').click(function() {
  Boxy.confirm("Please confirm?", function() { alert("Confirmed!"); });
  return false;
  });


//弹出询问?br /> Boxy.ask("内容", {"按钮?":"按钮1", "按钮?:"按钮2"}, "动作", {参数});
  $('#ask-actuator').click(function() {
    Boxy.ask("q里是询问内?", ["按钮1", "按钮2", "按钮3"], function(val) {
  if(val=="按钮3"){
    alert('哈哈Q被你选了');
  }else{
    alert("您选择了按?+val);
    }
    }, {title: "q里是标?});
    return false;
  });
$('#ask-actuator').click(function() {
  Boxy.ask("q里是询问内?",
      {"1":"按钮1", "2":"按钮2"},  //"1代表?  "按钮1"代表名称
      function(val) { alert(val); },
      {title: "q里是标?}
      );
  return false;
});

自定义弹出对话框
$('#cs').click(function() {
  
              new Boxy("<div><a href='#' onclick='Boxy.get(this).hide();'>q里是内?lt;/a>"+
        "<a href='#' onclick='Boxy.get(this).tween(400, 400);return false;'>变大</a></div>",
        {
          title:"你好",        //标题
        closeText:"[关闭]",            //关闭文字
        modal:true,        //背景是否变暗
        fixed:true,        //H口是否固定
        cache:true,        //是否被遮?br />         draggable:true,      //q个讑֮H口是否可以拖动Q要定义title才有效,讑֮了modal无?br />         center:true,        //弹出对话框是否居?br />         x:50,
        y:50,            //讑֮H口位置gؓQ多,讑֮此后center会被覆盖
        afterDrop:function(){},    //关闭对话框后执行的{IE下面关闭不了,原因不明?br />         afterShow:function(){},    //打开对话框后执行?br />         afterHide:function(){}    //隐藏对话框后执行?br />
        });
              return false;
});



cyantide 2009-10-13 10:20 发表评论
]]>
面滚动Ҏ:MARQUEE标记(转脓)http://www.aygfsteel.com/cyantide/archive/2009/01/08/250468.htmlcyantidecyantideThu, 08 Jan 2009 04:18:00 GMThttp://www.aygfsteel.com/cyantide/archive/2009/01/08/250468.htmlhttp://www.aygfsteel.com/cyantide/comments/250468.htmlhttp://www.aygfsteel.com/cyantide/archive/2009/01/08/250468.html#Feedback0http://www.aygfsteel.com/cyantide/comments/commentRss/250468.htmlhttp://www.aygfsteel.com/cyantide/services/trackbacks/250468.html   behavior="…"  
  BGCOLOR="…"  
  DIRECTION="…"  
  HEIGHT="…"  
  WIDTH="…"  
  HSPACE="…"  
  VSPACE="…"  
  LOOP="…"  
  SCROLLAMOUNT="…"  
  SCROLLDELAY="…"  
>…</MARQUEE>  

align:   
寚w方式 LEFTQ?/font>CENTERQ?/font>RIGHTQ?/font>TOPQ?/font>BOTTOM (不用多说?/font>)
behavior:   
用于讑֮滚动的方式,主要׃U方式:
behavior="scroll":   
表示׃端滚动到另一端;
behavior="slide":   
表示׃端快速滑动到另一端,且不再重复;
behavior="alternate" :   
默认?/font>—?/font>表示在两端之间来回滚动?/font>
direction:    left(默认?/font>) ?/font>; right ?/font>;up ?/font>;down ?/font>;
bgcolor:   
背景颜色
height:   
高度
weight:   
宽度
Hspace/vspace:   
分别用于讑֮滚动字幕的左双框和上下Ҏ的宽度。作用大概和css中的margin差不?/font>
scrollamount:   
用于讑֮每个q箋滚动文本后面的间隔,该间隔用像素表示Q以上是官方说法,其实是滚动的速度Qg能太?/font>,要不从视觉角度来?/font>,是没反应?/font>.D大速度快Q反之越慢?/font>
scrolldelay:   
延迟旉
loop:   
q个属性大家也很熟悉,循环ơ数Q?/font>loop=-1的时候一直重复@环(默认|

好,现在我们再来接触一?/font>Dcode的一些知识?/font>
首先是两个鼠标事?/font>

onmouseover:   
鼠标触发事g---当用户将鼠标指针Ud到对象内时触?/font>
onmouseout:   
鼠标滑出事g---当用户将鼠标指针Ud对象边界时触?/font>
q里要用到的?/font> this.start() ?/font>this.stop()
FONT-SIZE: 9pt; COLOR: black; FONT-FAMILY: 宋体; mso-ascii-font-family: Verdana; mso-hansi-font-family: Verdana">意思就是鼠标移?/font>
marquee的内容上的时候停止@环,鼠标Udmarquee 又开始移动?/font>
l箋
innercode:   
讄或获取位于对象v始和l束标签内的 code
innerText:   
讄或获取位于对象v始和l束标签内的文本
scrollLeft:   
讄或获取位于对象左边界和窗口中目前可见内容的最左端之间的距?/font>
scrollTop:   
讄或获取位于对象最端和窗口中可见内容的最端之间的距R?/font>PS:大家不要惛_然的以ؓ?/font>scrollRigh?/font>scrollDown Q)
scrollDelay:   
讄或获取字q滚动的速度Q要创徏垂直滚动的字q,请将?/font> scrollLeft 属性设定ؓ0Q要创徏水^滚动的字q,请将?/font> scrollTop 属性设定ؓ 0Q这覆盖Q何脚本设|?/font>
scrollHeight:   
获取对象的滚动高?/font>
scrollAmount:   
讄或获取介于每个字q绘制序列之间的文本滚动像素?/font>
offsetTop:   
获取对象相对于版面或?/font> offsetTop 属性指定的父坐标的计算端位置
offsetLeft:   
获取对象相对于版面或?/font> offsetParent 属性指定的父坐标的计算左侧位置
offsetHeight:   
获取对象相对于版面或q坐标 offsetParent 属性指定的父坐标的高度?/font>
setInterval:   
交互旉。它从蝲入后,每隔指定的时间就执行一ơ表辑ּ
clearInterval:   
使用 setInterval Ҏ取消先前开始的间隔事g?/font>

cyantide 2009-01-08 12:18 发表评论
]]>
javascript列子学习Q{帖)http://www.aygfsteel.com/cyantide/archive/2008/12/03/244216.htmlcyantidecyantideWed, 03 Dec 2008 14:00:00 GMThttp://www.aygfsteel.com/cyantide/archive/2008/12/03/244216.htmlhttp://www.aygfsteel.com/cyantide/comments/244216.htmlhttp://www.aygfsteel.com/cyantide/archive/2008/12/03/244216.html#Feedback0http://www.aygfsteel.com/cyantide/comments/commentRss/244216.htmlhttp://www.aygfsteel.com/cyantide/services/trackbacks/244216.html 1、数字验证内
1.1 整数
1.2 大于0的整?Q用于传来的ID的验?
1.3 负整数的验证
1.4 整数不能大于iMax
1.5 整数不能于iMin
2、时间类
2.1 短时_形如 (13:04:06)
2.2 短日期,形如 (2003-12-05)
2.3 长时_形如 (2003-12-05 13:04:06)
2.4 只有q和月。Ş?2003-05,或?003-5)
2.5 只有时和分?形如(12:03)
3、表单类
3.1 所有的表单的值都不能为空
3.2 多行文本框的g能ؓI?br /> 3.3 多行文本框的g能超qsMaxStrleng
3.4 多行文本框的g能少于sMixStrleng
3.5 判断单选框是否选择?br /> 3.6 判断复选框是否选择.
3.7 复选框的全选,多选,全不选,反?br /> 3.8 文g上传q程中判断文件类?br /> 4、字W类
4.1 判断字符全部由a-Z或者是A-Z的字字母l成
4.2 判断字符由字母和数字l成?br /> 4.3 判断字符由字母和数字Q下划线,点号l成.且开头的只能是下划线和字?br /> 4.4 字符串替换函?Replace();
5、浏览器c?br /> 5.1 判断览器的cd
5.2 判断ie的版?br /> 5.3 判断客户端的分L?

6、结合类
6.1 email的判断?br /> 6.2 手机L的验?br /> 6.3 w䆾证的验证


二、功能类

1、时间与相关控gc?br /> 1.1 日历
1.2 旉控g
1.3 万年?br /> 1.4 昄动态显C时钟效果(文本Q如OA中时_
1.5 昄动态显C时钟效?(囑փQ像手表)
2、表单类
2.1 自动生成表单
2.2 动态添加,修改Q删除下拉框中的元素
2.3 可以输入内容的下拉框
2.4 多行文本框中只能输入iMax文字。如果多输入了,自动减少到iMax个文字(多用于短信发?

3、打印类
3.1 打印控g
4、事件类
4.1 屏蔽右键
4.2 屏蔽所有功能键
4.3 --> ?lt;-- F5 F11,F9,F1
4.4 屏蔽l合键ctrl+N
5、网设计类
5.1 q箋滚动的文字,囄Q注意是q箋的,两段文字和图片中没有I白出现Q?br /> 5.2 html~辑控gc?br /> 5.3 颜色选取框控?br /> 5.4 下拉菜单
5.5 两层或多层次的下拉菜?br /> 5.6 仿IE菜单的按钮。(效果如rongshuxa.com的导航栏?
5.7 状态栏Qtitle栏的动态效果(例子很多Q可以研I一下)
5.8 双击后,|页自动滚屏
6、树型结构?br /> 6.1 asp+SQL?br /> 6.2 asp+xml+sql?br /> 6.3 java+sql或者java+sql+xml
7、无Ҏ效果的制?br /> 8、连动下拉框技?br /> 9、文本排?br /> ---------------------------------------------------------------------------------------

一、验证类
1、数字验证内
1.1 整数
/^(-|\+)?\d+$/.test(str)
1.2 大于0的整?Q用于传来的ID的验?
/^\d+$/.test(str)
1.3 负整数的验证
/^-\d+$/.test(str)
2、时间类
2.1 短时_形如 (13:04:06)
function isTime(str)
{
var a = str.match(/^(\d{1,2})(?(\d{1,2})\2(\d{1,2})$/);
if (a == null) {alert('输入的参C是时间格?); return false;}
if (a[1]>24 || a[3]>60 || a[4]>60)
{
alert("旉格式不对");
return false
}
return true;
}
2.2 短日期,形如 (2003-12-05)
function strDateTime(str)
{
var r = str.match(/^(\d{1,4})(-|\/)(\d{1,2})\2(\d{1,2})$/);
if(r==null)return false;
var d= new Date(r[1], r[3]-1, r[4]);
return (d.getFullYear()==r[1]&&(d.getMonth()+1)==r[3]&&d.getDate()==r[4]);
}
2.3 长时_形如 (2003-12-05 13:04:06)
function strDateTime(str)
{
var reg = /^(\d{1,4})(-|\/)(\d{1,2})\2(\d{1,2}) (\d{1,2})\d{1,2})\d{1,2})$/;
var r = str.match(reg);
if(r==null)return false;
var d= new Date(r[1], r[3]-1,r[4],r[5],r[6],r[7]);
return (d.getFullYear()==r[1]&&(d.getMonth()+1)==r[3]&&d.getDate()==r[4]&&d.getHours()==r[5]&&d.getMinutes()==r[6]&&d.getSeconds()==r[7]);
}
2.4 只有q和月。Ş?2003-05,或?003-5)
2.5 只有时和分?形如(12:03)
3、表单类
3.1 所有的表单的值都不能为空

3.2 多行文本框的g能ؓI?br /> 3.3 多行文本框的g能超qsMaxStrleng
3.4 多行文本框的g能少于sMixStrleng
3.5 判断单选框是否选择?br /> 3.6 判断复选框是否选择.
3.7 复选框的全选,多选,全不选,反?br /> 3.8 文g上传q程中判断文件类?br /> 4、字W类
4.1 判断字符全部由a-Z或者是A-Z的字字母l成

4.2 判断字符由字母和数字l成?/p>

4.3 判断字符由字母和数字Q下划线,点号l成.且开头的只能是下划线和字?br /> /^([a-zA-z_]{1})([\w]*)$/g.test(str)
4.4 字符串替换函?Replace();
5、浏览器c?br /> 5.1 判断览器的cd
window.navigator.appName
5.2 判断ie的版?br /> window.navigator.appVersion
5.3 判断客户端的分L?br /> window.screen.height; window.screen.width;

6、结合类
6.1 email的判断?br /> function ismail(mail)
{
return(new RegExp(/^\w+((-\w+)|(\.\w+))*\-AT-[A-Za-z0-9]+((\.|-)[A-Za-z0-9]+)*\.[A-Za-z0-9]+$/).test(mail));
}
6.2 手机L的验?br /> 6.3 w䆾证的验证
function isIdCardNo(num)
{
if (isNaN(num)) {alert("输入的不是数字!"); return false;}
var len = num.length, re;
if (len == 15)
re = new RegExp(/^(\d{6})()?(\d{2})(\d{2})(\d{2})(\d{3})$/);
else if (len == 18)
re = new RegExp(/^(\d{6})()?(\d{4})(\d{2})(\d{2})(\d{3})(\d)$/);
else {alert("输入的数字位C对!"); return false;}
var a = num.match(re);
if (a != null)
{
if (len==15)
{
var D = new Date("19"+a[3]+"/"+a[4]+"/"+a[5]);
var B = D.getYear()==a[3]&&(D.getMonth()+1)==a[4]&&D.getDate()==a[5];
}
else
{
var D = new Date(a[3]+"/"+a[4]+"/"+a[5]);
var B = D.getFullYear()==a[3]&&(D.getMonth()+1)==a[4]&&D.getDate()==a[5];
}
if (!B) {alert("输入的n份证?"+ a[0] +" 里出生日期不对!"); return false;}
}
return true;
}
-------------------------------------------------------------------------------------

3.7 复选框的全选,多选,全不选,反?/p>

全?/p>


全?/p>

function checkAll(str)
{
var a = document.getElementsByName(str);
var n = a.length;
for (var i=0; ia[i].checked = window.event.srcElement.checked;
}
function checkItem(str)
{
var e = window.event.srcElement;
var all = eval("document.hrong."+ str);
if (e.checked)
{
var a = document.getElementsByName(e.name);
all.checked = true;
for (var i=0; i{
if (!a[i].checked){ all.checked = false; break;}
}
}
else all.checked = false;
}


3.8 文g上传q程中判断文件类?/p>


-------------------------------------------------------------------------------------
Q.w䆾证严格验证:

Q.验证QP地址

function isip(s){
var check=function(v){try{return (v<=255 && v>=0)}catch(x){return false}};
var re=s.split(".")
return (re.length==4)?(check(re[0]) && check(re[1]) && check(re[2]) && check(re[3])):false
}

var s="202.197.78.129";
alert(isip(s))

Q.加sp1后还能用的无ҎH口Q!


/*--- Special Thanks For andot ---*/

/*
This following code are designed and writen by Windy_sk
You can use it freely, but u must held all the copyright items!
/

/- Thanks For andot Again ---*/

var CW_width = 400;
var CW_height = 300;
var CW_top = 100;
var CW_left = 100;
var CW_url = "/";
var New_CW = window.createPopup();
var CW_Body = New_CW.document.body;
var content = "";
var CSStext = "margin:1px;color:black; border:2px outset;border-style:expression(onmouseout=onmouseup=function(){this.style.borderStyle='outset'}, onmousedown=function(){if(event.button!=2)this.style.borderStyle='inset'});background-color:buttonface;width:16px;height:14px;font-size:12px;line-height:11px;cursor:Default;";

//Build Window
include.startDownload(CW_url, function(source){content=source});

function insert_content(){
var temp = "";
CW_Body.style.overflow = "hidden";
CW_Body.style.backgroundColor = "white";
CW_Body.style.border = "solid black 1px";
content = content.replace(/]*)>/g,"");
temp += "";
temp += "";
temp += "Chromeless Window For IE6 SP1";
temp += "";
temp += "?";
temp += "0";
temp += "1";
temp += "x";
temp += "";
temp += "";
temp += content;
temp += "

";
temp += "";
CW_Body.innerHTML = temp;
}

setTimeout("insert_content()",1000);

var if_max = true;
function show_CW(){
window.moveTo(10000, 10000);
if(if_max){
New_CW.show(CW_top, CW_left, CW_width, CW_height);
if(typeof(New_CW.document.all.include)!="#ff0000"){
New_CW.document.all.include.style.width = CW_width;
New_CW.document.all.Max.innerText = "1";
}

}else{
New_CW.show(0, 0, screen.width, screen.height);
New_CW.document.all.include.style.width = screen.width;
}
}

window.onfocus = show_CW;
window.onresize = show_CW;

// Move Window
var drag_x,drag_y,draging=false

function drag_move(e){
if (draging){
New_CW.show(e.screenX-drag_x, e.screenY-drag_y, CW_width, CW_height);
return false;
}
}

function drag_down(e){
if(e.button==2)return;
if(New_CW.document.body.offsetWidth==screen.width && New_CW.document.body.offsetHeight==screen.height)return;
drag_x=e.clientX;
drag_y=e.clientY;
draging=true;
e.srcElement.setCapture();
}

function drag_up(e){
draging=false;
e.srcElement.releaseCapture();
if(New_CW.document.body.offsetWidth==screen.width && New_CW.document.body.offsetHeight==screen.height) return;
CW_top = e.screenX-drag_x;
CW_left = e.screenY-drag_y;
}


 
电话L的验?/p>

要求Q?br /> (1)电话L由数字?("?)"?-"构成
(2)电话L???br /> (3)如果电话L中包含有区号Q那么区号ؓ三位或四?br /> (4)区号?("?)"?-"和其他部分隔开
(5)Ud电话L?1?2位,如果?2?那么W一位ؓ0
(6)11位移动电话号码的W一位和W二位ؓ"13"
(7)12位移动电话号码的W二位和W三位ؓ"13"
Ҏq几条规则,可以与出以下正则表达式:
(^[0-9]{3,4}\-[0-9]{3,8}$)|(^[0-9]{3,8}$)|(^\([0-9]{3,4}\)[0-9]{3,8}$)|(^0{0,1}13[0-9]{9}$)

function PhoneCheck(s) {
var str=s;
var reg=/(^[0-9]{3,4}\-[0-9]{3,8}$)|(^[0-9]{3,8}$)|(^\([0-9]{3,4}\)[0-9]{3,8}$)|(^0{0,1}13[0-9]{9}$)/
alert(reg.test(str));
}

--------------------------------------------------------------------------------------


---------------------------------------------------------------------------------

//验法Z?br /> function isCorporationCode(s){
var patrn=/^(\d){15}$/;
if (!patrn.exec(s)) return false
return true
}

//校验d名:只能输入5-20个以字母开头、可带数字?#8220;_”?#8220;.”的字?br /> function isRegisterUserName(s)
{
var patrn=/^[a-zA-Z]{1}([a-zA-Z0-9._]){4,19}$/;
if (!patrn.exec(s)) return false
return true
}
//校验用户姓名Q只能输?-30个以字母开头的字串
function isTrueName(s)
{
var patrn=/^[^`~!@#$%^&*()+-=|\\\[\]\{\}:;\'\,.<>/? 0-9]{2,19}$/;
if (!patrn.exec(s)) return false
return true
}

//校验密码Q只能输?-15个字母、数?br /> function isPasswd(s)
{
var patrn=/^[a-zA-Z0-9]{6,15}$/;
if (!patrn.exec(s)) return false
return true
}

//验体?br /> function isAvoirdupois(s)
{
var patrn=/^[1-9]{1}[0-9]{0,2}$/;
var patrn2=/^[1-9]{1}$/;
var intPart=s.indexOf('.');
var decPart=s.lastIndexOf('.');
if (intPart==-1 && patrn.exec(s) && eval(s)>=2 && eval(s)<=200) return true
if (intPart!=decPart || intPart==0 || intPart+2!=s.length) return false
if (!patrn.exec(s.substring(0,intPart)) || !patrn2.exec(s.substring(decPart+1))) return false
if (eval(s)<2 || eval(s)>200) return false
return true
}

//校验普通电话、传真号码:可以“+”开_除数字外Q可含有“-”
function isTel(s)
{
var patrn=/^[+]{0,1}(\d){1,3}[ ]?([-]?((\d)|[ ]){1,12})+$/;
if (!patrn.exec(s)) return false
return true
}

//校验手机LQ必M数字开_除数字外Q可含有“-”
function isMobile(s)
{
var patrn=/^[+]{0,1}(\d){1,3}[ ]?([-]?((\d)|[ ]){1,12})+$/;
if (!patrn.exec(s)) return false
return true
}

//校验地区代码
function isAreaCode(s)
{
var patrn=/^(\d){6}$/;
if (!patrn.exec(s)) return false
return true
}

//校验邮政~码
function isPostalCode(s)
{
var patrn=/^[1-9]{1}(\d){5}$/;
if (!patrn.exec(s)) return false
return true
}

//校验搜烦关键?br /> function isSearch(s)
{
var patrn=/^[^`~!@#$%^&*()+=|\\\[\]\{\}:;\'\,.<>/? ]{1}[^`~!@$%^&()+=|\\\[\]\{\}:;\'\,.<>?]{0,19}$/;
if (!patrn.exec(s)) return false
return true
}

//校验是否为ip地址
function isIP(s)
{
var patrn=/^[0-9.]{1,20}$/;
if (!patrn.exec(s)) return false
return true
}

//验页码是否正?br /> function isPage(s)
{
var patrn=/^[1-9]{1}[0-9]{0,2}$/;
if (!patrn.exec(s)) return false
return true
}

//表单输入值错误提C?br /> function vErr(o,s){
alert(s);
if (o) o.focus();
return false;
}

//判断单?br /> function chkRadio(o){
for (i=0;iif (o[i].checked) return true;
}
return false;
}
//====================================表单c?===============================
// 文g上传q程中判断文件类?br /> /*

/

//表单的g能ؓI?br /> function isNull(elem){
//var pattern=/^\s+|\s+$/;
if(elem.replace(/(^\s+|\s$)/g, "")==""){
return false;
}else{
return true;
}
}
//不能过imax字符
function imax(elem){
if(elem.length>imax){
return false;
}else{
return true;
}
}
//不能于imix字符
function imix(elem){
if(elem.lengthreturn false;
}else{
return true;
}
}
//输入Z文判?br /> function isChinese(elem){
var pattern=/[^\x00-\xff]/g;
if(pattern.test(elem)){
//包含中文
return false;
}else{
//不包含中?br /> return true;
}
}

/ *********************************************************************************************************************

.cMenu {
FILTER: alpha(opacity=0);BACKGROUND-COLOR: #D6D3CE;BORDER-BOTTOM: #666666 2px solid; BORDER-LEFT: #E4E4E4 2px solid; BORDER-RIGHT: #666666 2px solid; BORDER-TOP: #E4E4E4 2px solid; COLOR: #000000; CURSOR: default; FONT-SIZE: 9pt; color:#000000;FONT-WEIGHT: normal; LINE-HEIGHT: 20px; POSITION: absolute; VISIBILITY: hidden; WIDTH: 110px
}
.menuitems {
font-size:9pt;
MARGIN: 2px;
PADDING-BOTTOM: 0px;
PADDING-LEFT: 15px;
PADDING-RIGHT: 3px;
PADDING-TOP: 0px;
}

<!--[if IE]>
onmouseover=highlightie5()>

电话L的验?/p>

要求Q?br /> (1)电话L由数字?("?)"?-"构成
(2)电话L???br /> (3)如果电话L中包含有区号Q那么区号ؓ三位或四?br /> (4)区号?("?)"?-"和其他部分隔开
(5)Ud电话L?1?2位,如果?2?那么W一位ؓ0
(6)11位移动电话号码的W一位和W二位ؓ"13"
(7)12位移动电话号码的W二位和W三位ؓ"13"
Ҏq几条规则,可以与出以下正则表达式:
(^[0-9]{3,4}\-[0-9]{3,8}$)|(^[0-9]{3,8}$)|(^\([0-9]{3,4}\)[0-9]{3,8}$)|(^0{0,1}13[0-9]{9}$)


<script language="javascript">
function PhoneCheck(s) {
var str=s;
var reg=/(^[0-9]{3,4}\-[0-9]{3,8}$)|(^[0-9]{3,8}$)|(^\([0-9]{3,4}\)[0-9]{3,8}$)|(^0{0,1}13[0-9]{9}$)/
alert(reg.test(str));
}
</script>
<input type=text name="iphone">
<input type=button onclick="PhoneCheck(document.all.iphone.value)" value="Check">
----------------------------------------------------------------------------------------

<%
'********************************************
'函数功能Q正则表辑ּ校验
'参数patrnQ要校验的类?br /> ' "User" - 用户?br /> ' "Truename" - 英文姓名
' "Passwd" - 密码
' "Tel" - 电话/传真
' "Mobil" - 手机
' "Date" - 日期Q格式:yyyy-mm-ddQ?br /> ' "Email" - 电子邮g
' "Postalcode" - 邮政~码
' "Search" - 搜烦关键?br /> ' "Int" - 整数
'参数strngQ要校验的字?br /> 'q回|校验l果Q正返回trueQ错误返回false
'********************************************
Function IsVerify(patrn,strng)
strng=Trim(strng)
Select Case patrn
Case "User" '用户?br /> patrn="^[a-z]{1}([a-z0-9]|[._]){2,19}$"
Case "Truename" '英文姓名
patrn="^[a-zA-Z]{1,30}$"
Case "Passwd" '密码
patrn="^(\w){6,20}$"
Case "Tel" '电话/传真
patrn="^[+]{0,1}(\d){1,3}[ ]?([-]?((\d)|[ ]){1,12})+$"
Case "Mobil" '手机
patrn="^(\d)+[-]?(\d){6,12}$"
Case "Date" '日期Q格式:yyyy-mm-ddQ?br /> patrn="^[12]{1}(\d){3}[-][01]?(\d){1}[-][0123]?(\d){1}$"
Case "Email" '电子邮g
patrn="^((\w)|[-]|[.])+@(((\w)|[-])+[.])+[a-z]{2,4}$"
Case "Postalcode" '邮政~码
patrn="^[a-z0-9 ]{3,12}$"
Case "Search" '搜烦关键?br /> patrn="^[^`~!@#$%^&*()+=|\\\[\]\{\}:;\'\,.<>/?]{1}[^`~!@$%^&()+=|\\\[\]\{\}:;\'\,.<>?]{0,19}$"
Case "Int" '整数
patrn="^[1-9]{1}[0-9]{0,6}$"
Case "Array"
patrn="^[0-9]{1}([0-9]|[\,]){0,150}$"
End Select
Dim regEx
Dim Match
Set regEx = New RegExp
regEx.Pattern = patrn
regEx.IgnoreCase = True
regEx.Global = True
Matches = regEx.test(strng)
IsVerify = Matches
Set regEx = Nothing
End Function

'********************************************
'函数功能Q对输入框的Ҏ字串q行qo保存
'参数strPassQ过滤前的字W串
'q回|qo后的字符?br /> '********************************************
Function SQLencode(byVal strPass)
strPass = Replace(strPass, "&", "&")
strPass = Replace(strPass, "<", "<")
strPass = Replace(strPass, ">", ">")
strPass = Replace(strPass, """", """)
strPass = Replace(strPass, "'", "'")
strPass = Replace(strPass, " ", " ")
strPass = Replace(strPass,chr(13)&chr(10),"<br/>")
SQLencode = strPass
End Function

'********************************************
'函数功能Q对SQLencode函数qo后的字符串进行还?br /> '参数strPassQ经q过滤后的字W串
'q回|q原的过滤前的字W串
'********************************************
Function SQLdecode(byVal strPass)
If Not isNull(strPass) Then
strPass = Replace(strPass, "<", "<")
strPass = Replace(strPass, ">", ">")
strPass = Replace(strPass, ""","""" )
strPass = Replace(strPass, "'","'" )
strPass = Replace(strPass,"<br/>",chr(13)&chr(10))
End If
SQLdecode = strPass
End Function

'********************************************
'函数功能Q生成随机密码(字符为数字与大小写字母集合)
'参数lengthQ密码长?br /> 'q回|随机密码
'********************************************
Function random(length)
Dim n,str
rnds=""
Randomize
For i=1 To length
n=Int(75*Rnd+48)
If (n>57 and n<65) Or (n>90 and n<97) Then
i=i-1
Else
rnds=rnds&Chr(n)
End If
Next
random=rnds
End Function

'********************************************
'函数功能Q对密码q行加密/解密Q最大长度ؓ15位)
'********************************************
Function Encrypt(preString)
Dim pwds,s
pwds=""
s=Left(preString,15)
For i=1 To Len(s)
seed=170-Asc(Mid(s,i,1))-i
pwds=pwds & Chr(seed)
Next
Encrypt=pwds
End Function

'********************************************
'函数功能Q格式化当前旉字串
'参数Q无
'q回|q回当前旉的纯数字字符串方式的表示Q例如:当前旉2001-10-3 2:34:6Q返回字W串"20011003023406"Q?br /> '********************************************
Function TheDate()
y=year(date())
m=month(date())
d=day(date())
h=Hour(time())
n=Minute(time())
s=Second(time())
If Len(m)=1 Then m="0"&m
If Len(d)=1 Then d="0"&d
If Len(h)=1 Then h="0"&h
If Len(n)=1 Then n="0"&n
If Len(s)=1 Then s="0"&s
thedate=y&m&d&h&n&s
End Function

'********************************************
'函数功能Q返回字W串的长?br /> '参数Q字W串
'q回|字符串长?br /> '********************************************
Function strLen(str)
dim p_len
p_len=0
strlen=0
if trim(str)<>"" then
p_len=len(trim(str))
for xx=1 to p_len
if asc(mid(str,xx,1))<0 then
strlen=int(strlen) + 2
else
strlen=int(strlen) + 1
end if
next
end if
End Function

'********************************************
'函数功能Q发送邮仉知
'参数Q字W串
'q回|成功/p|
'********************************************
Function SendMail(ToAddress, Subject, Body)
On Error Resume Next
Set objMail = Server.CreateObject("JMail.Message")
objMail.From = ADR_Email
objMail.FromName = "ADR理中心"
objMail.Subject = Subject
objMail.AddRecipient ToAddress
objMail.Body = Body
If objMail.Send("") Then
SendMail = True
Else
SendMail = False
End If
If Err.Number<> 0 Then SendMail = False
Set objMail = Nothing
On Error Goto 0
End Function
%>
-----------------------------------------------------------------------------------

//验法Z?br /> function isCorporationCode(s){
var patrn=/^(\d){15}$/;
if (!patrn.exec(s)) return false
return true
}

//校验d名:只能输入5-20个以字母开头、可带数字?#8220;_”?#8220;.”的字?br /> function isRegisterUserName(s)
{
var patrn=/^[a-zA-Z]{1}([a-zA-Z0-9._]){4,19}$/;
if (!patrn.exec(s)) return false
return true
}
//校验用户姓名Q只能输?-30个以字母开头的字串
function isTrueName(s)
{
var patrn=/^[^`~!@#$%^&*()+-=|\\\[\]\{\}:;\'\,.<>/? 0-9]{2,19}$/;
if (!patrn.exec(s)) return false
return true
}

//校验密码Q只能输?-15个字母、数?br /> function isPasswd(s)
{
var patrn=/^[a-zA-Z0-9]{6,15}$/;
if (!patrn.exec(s)) return false
return true
}

//验体?br /> function isAvoirdupois(s)
{
var patrn=/^[1-9]{1}[0-9]{0,2}$/;
var patrn2=/^[1-9]{1}$/;
var intPart=s.indexOf('.');
var decPart=s.lastIndexOf('.');
if (intPart==-1 && patrn.exec(s) && eval(s)>=2 && eval(s)<=200) return true
if (intPart!=decPart || intPart==0 || intPart+2!=s.length) return false
if (!patrn.exec(s.substring(0,intPart)) || !patrn2.exec(s.substring(decPart+1))) return false
if (eval(s)<2 || eval(s)>200) return false
return true
}

//校验普通电话、传真号码:可以“+”开_除数字外Q可含有“-”
function isTel(s)
{
var patrn=/^[+]{0,1}(\d){1,3}[ ]?([-]?((\d)|[ ]){1,12})+$/;
if (!patrn.exec(s)) return false
return true
}

//校验手机LQ必M数字开_除数字外Q可含有“-”
function isMobile(s)
{
var patrn=/^[+]{0,1}(\d){1,3}[ ]?([-]?((\d)|[ ]){1,12})+$/;
if (!patrn.exec(s)) return false
return true
}

//校验地区代码
function isAreaCode(s)
{
var patrn=/^(\d){6}$/;
if (!patrn.exec(s)) return false
return true
}

//校验邮政~码
function isPostalCode(s)
{
var patrn=/^[1-9]{1}(\d){5}$/;
if (!patrn.exec(s)) return false
return true
}

//校验搜烦关键?br /> function isSearch(s)
{
var patrn=/^[^`~!@#$%^&*()+=|\\\[\]\{\}:;\'\,.<>/? ]{1}[^`~!@$%^&()+=|\\\[\]\{\}:;\'\,.<>?]{0,19}$/;
if (!patrn.exec(s)) return false
return true
}

//校验是否为ip地址
function isIP(s)
{
var patrn=/^[0-9.]{1,20}$/;
if (!patrn.exec(s)) return false
return true
}

//验页码是否正?br /> function isPage(s)
{
var patrn=/^[1-9]{1}[0-9]{0,2}$/;
if (!patrn.exec(s)) return false
return true
}

//表单输入值错误提C?br /> function vErr(o,s){
alert(s);
if (o) o.focus();
return false;
}

//判断单?br /> function chkRadio(o){
for (i=0;i<o.length;i++){
if (o[i].checked) return true;
}
return false;
}


cyantide 2008-12-03 22:00 发表评论
]]>
Table表格如何固定W一?/title><link>http://www.aygfsteel.com/cyantide/archive/2008/11/27/242948.html</link><dc:creator>cyantide</dc:creator><author>cyantide</author><pubDate>Thu, 27 Nov 2008 02:42:00 GMT</pubDate><guid>http://www.aygfsteel.com/cyantide/archive/2008/11/27/242948.html</guid><wfw:comment>http://www.aygfsteel.com/cyantide/comments/242948.html</wfw:comment><comments>http://www.aygfsteel.com/cyantide/archive/2008/11/27/242948.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.aygfsteel.com/cyantide/comments/commentRss/242948.html</wfw:commentRss><trackback:ping>http://www.aygfsteel.com/cyantide/services/trackbacks/242948.html</trackback:ping><description><![CDATA[需要css和js配合使用<br /> css:<br /> <div style="border-right: #cccccc 1px solid; padding-right: 5px; border-top: #cccccc 1px solid; padding-left: 4px; font-size: 13px; padding-bottom: 4px; border-left: #cccccc 1px solid; width: 98%; word-break: break-all; padding-top: 4px; border-bottom: #cccccc 1px solid; background-color: #eeeeee"><img id="Codehighlighter1_9_88_Open_Image" onclick="this.style.display='none'; Codehighlighter1_9_88_Open_Text.style.display='none'; Codehighlighter1_9_88_Closed_Image.style.display='inline'; Codehighlighter1_9_88_Closed_Text.style.display='inline';" src="http://www.aygfsteel.com/images/OutliningIndicators/ExpandedBlockStart.gif" align="top" alt="" /><img id="Codehighlighter1_9_88_Closed_Image" style="display: none" onclick="this.style.display='none'; Codehighlighter1_9_88_Closed_Text.style.display='none'; Codehighlighter1_9_88_Open_Image.style.display='inline'; Codehighlighter1_9_88_Open_Text.style.display='inline';" src="http://www.aygfsteel.com/images/OutliningIndicators/ContractedBlock.gif" align="top" alt="" /><span style="color: #800000">.theader </span><span id="Codehighlighter1_9_88_Closed_Text" style="border-right: #808080 1px solid; border-top: #808080 1px solid; display: none; border-left: #808080 1px solid; border-bottom: #808080 1px solid; background-color: #ffffff">{<img src="http://www.aygfsteel.com/Images/dot.gif" alt="" />}</span><span id="Codehighlighter1_9_88_Open_Text"><span style="color: #000000">{</span><span style="color: #ff0000">white-space</span><span style="color: #000000">:</span><span style="color: #0000ff">nowrap</span><span style="color: #000000">;</span><span style="color: #ff0000"> position</span><span style="color: #000000">:</span><span style="color: #0000ff">relative</span><span style="color: #000000">;</span><span style="color: #ff0000"> fixl</span><span style="color: #000000">:</span><span style="color: #0000ff">expression(fixTableHeader(this))</span><span style="color: #000000">;</span><span style="color: #ff0000"> </span></div> </span><br /> js:<br /> <div style="border-right: #cccccc 1px solid; padding-right: 5px; border-top: #cccccc 1px solid; padding-left: 4px; font-size: 13px; padding-bottom: 4px; border-left: #cccccc 1px solid; width: 98%; word-break: break-all; padding-top: 4px; border-bottom: #cccccc 1px solid; background-color: #eeeeee"><img id="Codehighlighter1_28_202_Open_Image" onclick="this.style.display='none'; Codehighlighter1_28_202_Open_Text.style.display='none'; Codehighlighter1_28_202_Closed_Image.style.display='inline'; Codehighlighter1_28_202_Closed_Text.style.display='inline';" src="http://www.aygfsteel.com/images/OutliningIndicators/ExpandedBlockStart.gif" align="top" alt="" /><img id="Codehighlighter1_28_202_Closed_Image" style="display: none" onclick="this.style.display='none'; Codehighlighter1_28_202_Closed_Text.style.display='none'; Codehighlighter1_28_202_Open_Image.style.display='inline'; Codehighlighter1_28_202_Open_Text.style.display='inline';" src="http://www.aygfsteel.com/images/OutliningIndicators/ContractedBlock.gif" align="top" alt="" /><span style="color: #0000ff">function</span><span style="color: #000000"> fixTableHeader(td) </span><span id="Codehighlighter1_28_202_Closed_Text" style="border-right: #808080 1px solid; border-top: #808080 1px solid; display: none; border-left: #808080 1px solid; border-bottom: #808080 1px solid; background-color: #ffffff"><img src="http://www.aygfsteel.com/Images/dot.gif" alt="" /></span><span id="Codehighlighter1_28_202_Open_Text"><span style="color: #000000">{<br /> <img src="http://www.aygfsteel.com/images/OutliningIndicators/InBlock.gif" align="top" alt="" />    </span><span style="color: #0000ff">var</span><span style="color: #000000"> table </span><span style="color: #000000">=</span><span style="color: #000000"> td.parentNode.parentNode.parentNode;<br /> <img src="http://www.aygfsteel.com/images/OutliningIndicators/InBlock.gif" align="top" alt="" />    </span><span style="color: #0000ff">var</span><span style="color: #000000"> div </span><span style="color: #000000">=</span><span style="color: #000000"> table.parentNode;<br /> <img src="http://www.aygfsteel.com/images/OutliningIndicators/InBlock.gif" align="top" alt="" />    td.style.top </span><span style="color: #000000">=</span><span style="color: #000000"> div.scrollTop </span><span style="color: #000000">+</span><span style="color: #000000"> 'px';<br /> <img src="http://www.aygfsteel.com/images/OutliningIndicators/InBlock.gif" align="top" alt="" />    td.style.zIndex </span><span style="color: #000000">=</span><span style="color: #000000"> </span><span style="color: #000000">10000</span><span style="color: #000000"> </span><span style="color: #000000">-</span><span style="color: #000000"> td.sourceIndex;<br /> <img src="http://www.aygfsteel.com/images/OutliningIndicators/ExpandedBlockEnd.gif" align="top" alt="" />}</span></span></div> <img src ="http://www.aygfsteel.com/cyantide/aggbug/242948.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.aygfsteel.com/cyantide/" target="_blank">cyantide</a> 2008-11-27 10:42 <a href="http://www.aygfsteel.com/cyantide/archive/2008/11/27/242948.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>关闭弹出H口?h父窗?/title><link>http://www.aygfsteel.com/cyantide/archive/2008/07/08/213372.html</link><dc:creator>cyantide</dc:creator><author>cyantide</author><pubDate>Tue, 08 Jul 2008 08:58:00 GMT</pubDate><guid>http://www.aygfsteel.com/cyantide/archive/2008/07/08/213372.html</guid><wfw:comment>http://www.aygfsteel.com/cyantide/comments/213372.html</wfw:comment><comments>http://www.aygfsteel.com/cyantide/archive/2008/07/08/213372.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.aygfsteel.com/cyantide/comments/commentRss/213372.html</wfw:commentRss><trackback:ping>http://www.aygfsteel.com/cyantide/services/trackbacks/213372.html</trackback:ping><description><![CDATA[<font style="background-color: #cce8cf">window.onUnload=function(){<br />     window.opener.location.href="/xxxx.action";<br /> }</font> <img src ="http://www.aygfsteel.com/cyantide/aggbug/213372.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.aygfsteel.com/cyantide/" target="_blank">cyantide</a> 2008-07-08 16:58 <a href="http://www.aygfsteel.com/cyantide/archive/2008/07/08/213372.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>window.open 参数详解http://www.aygfsteel.com/cyantide/archive/2008/07/02/212124.htmlcyantidecyantideWed, 02 Jul 2008 08:08:00 GMThttp://www.aygfsteel.com/cyantide/archive/2008/07/02/212124.htmlhttp://www.aygfsteel.com/cyantide/comments/212124.htmlhttp://www.aygfsteel.com/cyantide/archive/2008/07/02/212124.html#Feedback0http://www.aygfsteel.com/cyantide/comments/commentRss/212124.htmlhttp://www.aygfsteel.com/cyantide/services/trackbacks/212124.html   'page.html' 弹出H口的文件名Q?
  'newwindow' 弹出H口的名字(不是文g名)Q非必须Q可用空''代替Q?
  height=100 H口高度Q?
  width=400 H口宽度Q?
  top=0 H口距离屏幕上方的象素|
  left=0 H口距离屏幕左侧的象素|
  toolbar=no 是否昄工具栏,yes为显C;
  menubarQscrollbars 表示菜单栏和滚动栏?
  resizable=no 是否允许改变H口大小Qyes为允许;
  location=no 是否昄地址栏,yes为允许;
  status=no 是否昄状态栏内的信息Q通常是文件已l打开Q,yes为允许;

cyantide 2008-07-02 16:08 发表评论
]]>
如何复选框讄Z能?/title><link>http://www.aygfsteel.com/cyantide/archive/2008/06/24/210313.html</link><dc:creator>cyantide</dc:creator><author>cyantide</author><pubDate>Tue, 24 Jun 2008 07:05:00 GMT</pubDate><guid>http://www.aygfsteel.com/cyantide/archive/2008/06/24/210313.html</guid><wfw:comment>http://www.aygfsteel.com/cyantide/comments/210313.html</wfw:comment><comments>http://www.aygfsteel.com/cyantide/archive/2008/06/24/210313.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.aygfsteel.com/cyantide/comments/commentRss/210313.html</wfw:commentRss><trackback:ping>http://www.aygfsteel.com/cyantide/services/trackbacks/210313.html</trackback:ping><description><![CDATA[<input type="checkbox" name="myOptDel" value="" disabled=true ><br /> <br /> disabled属性可以复选框不能使用 <img src ="http://www.aygfsteel.com/cyantide/aggbug/210313.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.aygfsteel.com/cyantide/" target="_blank">cyantide</a> 2008-06-24 15:05 <a href="http://www.aygfsteel.com/cyantide/archive/2008/06/24/210313.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>showModalDialog(对话H口)http://www.aygfsteel.com/cyantide/archive/2008/06/24/210284.htmlcyantidecyantideTue, 24 Jun 2008 05:22:00 GMThttp://www.aygfsteel.com/cyantide/archive/2008/06/24/210284.htmlhttp://www.aygfsteel.com/cyantide/comments/210284.htmlhttp://www.aygfsteel.com/cyantide/archive/2008/06/24/210284.html#Feedback0http://www.aygfsteel.com/cyantide/comments/commentRss/210284.htmlhttp://www.aygfsteel.com/cyantide/services/trackbacks/210284.htmlfunction selectIp(index) {
     var width = 600;
     var height = 500;
     var left = (screen.width - width) / 2;
     var top = (screen.height - height) / 2 - 40;
     var style = 'status=yes,resizable=no,width=' +
             width + ',height=' + height + ',top=' + top + ',left=' + left;
     v = showModalDialog('getIpAddress.asp', '',
         'dialogWidth:' + width + 'px;dialogHeight:' + height + 'px;dialogLeft:' + left +
         'px;dialogTop:' + top + 'px;center:yes;help:no;resizable:no;status:no;scroll:no');
     if(v) {
      document.getElementById('ip'+index).value = v;
     }
   }



cyantide 2008-06-24 13:22 发表评论
]]>
html标签的值在发生属性更改的同时触发的方?/title><link>http://www.aygfsteel.com/cyantide/archive/2008/06/19/209178.html</link><dc:creator>cyantide</dc:creator><author>cyantide</author><pubDate>Thu, 19 Jun 2008 07:52:00 GMT</pubDate><guid>http://www.aygfsteel.com/cyantide/archive/2008/06/19/209178.html</guid><wfw:comment>http://www.aygfsteel.com/cyantide/comments/209178.html</wfw:comment><comments>http://www.aygfsteel.com/cyantide/archive/2008/06/19/209178.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.aygfsteel.com/cyantide/comments/commentRss/209178.html</wfw:commentRss><trackback:ping>http://www.aygfsteel.com/cyantide/services/trackbacks/209178.html</trackback:ping><description><![CDATA[onpropertychange 当在对象上发生属性更Ҏ触发?br /> <br /> <br /> 使用该方法可辑ֈ:<br />     更新一个文本框,另一个文本框动态改变的效果 <img src ="http://www.aygfsteel.com/cyantide/aggbug/209178.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.aygfsteel.com/cyantide/" target="_blank">cyantide</a> 2008-06-19 15:52 <a href="http://www.aygfsteel.com/cyantide/archive/2008/06/19/209178.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>转蝲:dhtmlxtree文档译http://www.aygfsteel.com/cyantide/archive/2008/06/12/207379.htmlcyantidecyantideThu, 12 Jun 2008 06:31:00 GMThttp://www.aygfsteel.com/cyantide/archive/2008/06/12/207379.htmlhttp://www.aygfsteel.com/cyantide/comments/207379.htmlhttp://www.aygfsteel.com/cyantide/archive/2008/06/12/207379.html#Feedback0http://www.aygfsteel.com/cyantide/comments/commentRss/207379.htmlhttp://www.aygfsteel.com/cyantide/services/trackbacks/207379.html <div id="treeBox" style="width:200;height:200"></div>
<script>
tree=new dhtmlXTreeObject(document.getElementById('treeBox'),"100%","100%",0);
tree.setImagePath("gfx/");
tree.enableCheckBoxes(false);
tree.enableDragAndDrop(true);
</script>
构造器的参数如?
1.应该树攄的位|?在调用构造器之前应当为初始化
2.树的宽度
3.树的高度
4.标明父节点到树根节点的深?
Ҏ参数:
1.setImagePath(url):指明了树图标的\?
2.enableCheckBoxes(mode):多选框是否有效,默认昄多选框
3.enableDragAndDrop(mode):是否允许拖放动作




讄Event Handlers
<div id="treeBox" style="width:200;height:200"></div>
<script>
tree=new dhtmlXTreeObject(document.getElementById('treeBox'),"100%","100%",0);
...
tree.setOnClickHandler(onNodeSelect);//set function object to call on node select
//see other available event handlers in API documentation
function onNodeSelect(nodeId){
...
}
</script>
大多数情况下制定event handlers的参C得到一些?关于被传递的变量l节部分请参考API documentation.




用Script加入节点:
<script>
tree=new dhtmlXTreeObject('treeBox',"100%","100%",0);
...
tree.insertNewChild(0,1,"New Node 1",0,0,0,0,"SELECT,CALL,TOP,CHILD,CHECKED");
tree.insertNewNext(1,2,"New Node 2",0,0,0,0,"CHILD,CHECKED");
</script>
1.参数0会被传递给函数的参?-7(调用select,image功能)的作用是使用他们的默认?
2.W?个参C?,'分割
3.SELECT:在插入后Ud光标到该节点
4.TOP:在TOP位置加入节点
5:CHIld:节点为儿?
6.CHECKED:多选框被选中(如果存在的话)




从XML中引导数?
<script>
tree=new dhtmlXTreeObject('treeBox',"100%","100%",0);
tree.setXMLAutoLoading("http://127.0.0.1/xml/tree.xml");
tree.loadXML("http://127.0.0.1/xml/tree.xml");//load root level from xml
</script>
1.被打开节点的ID会被加入到initXMLAutoLoading(url)中去
2.当被调用的时候没有额外的ID加入到loadXML(url)?
3.当调用没有参数loadXML()?你将会用initXMLAutoLoading(url)中的url
XML Syntax:
<?xml version='1.0' encoding='iso-8859-1'?>
<tree id="0">
<item text="My Computer" id="1" child="1" im0="my_cmp.gif" im1="my_cmp.gif" im2="my_cmp.gif" call="true" select="yes">
<userdata name="system">true</userdata>
<item text="Floppy (A:)" id="11" child="0" im0="flop.gif" im1="flop.gif" im2="flop.gif"/>
<item text="Local Disk (C:)" id="12" child="0" im0="drv.gif" im1="drv.gif" im2="drv.gif"/>
</item>
<item text="Recycle Bin" id="4" child="0" im0="recyc.gif" im1="recyc.gif" im2="recyc.gif"/>
</tree>
在PHP的语法中:
<?php
if ( stristr($_SERVER["HTTP_ACCEPT"],"application/xhtml+xml") ) {
header("Content-type: application/xhtml+xml"); } else {
header("Content-type: text/xml");
}
echo("<?xml version=\"1.0\" encoding=\"iso-8859-1\"?>\n");
?>
<tree>节点是强制的,他表明引导数据块的父?按照ID参数指定他的父亲.引导root的时候你需要指定tree对象:new myObjTree(boxObject,width,height,0)
<item>可以包含子元?Z一ơload更多),该标{强制参数如下:
1.text:节点的名U?
2.id:节点的id
可选参数如?
3tooltip:节点的提C?
4im0:没有儿子的节点图?节点依靠setImagePath(url)中指定的路径来得到图?
5.im1:打开有儿子节Ҏ的图?
6.im2:关闭有儿子节点的囄
7:acolor:没有选择元素的颜?
8:scolor:选择元素后的颜色
9:select:在导入节点的时候选择
10:open:节点展开
11:call:调用函数在选择节点的时?
12:checked:如果多选框存在的时候选择
13:child:如果节点有儿子的时候ؓ1否则?
14:imheight:图标的高?
15:imwidth:图标的宽?
在xml中直接设定userdata<userdata>
他有一个参?name,value来指定他的?





l节点设定自定义图标:
q里有两U方法来l节点设定自定义图标.它依赖欲你加元素的方?
?依靠setImagepath(url)Ҏ来得到图?
javascriptҎ:使用insertNewChild(...)或者insertNewNext(...)Ҏ
<script>
var im0 = "doc.gif";//icon to show if node contains no children
var im1 = "opened.gif";//if node contains children and opened
var im2 = "closed.gif";//if node contains children and closed
tree.insertNewItem(0,1,"New Node 1",0,im0,im1,im2);
tree.insertNewNext(1,2,"New Node 2",0,"txt.gif","opened.gif","closed.gif");
</script>
XML Ҏ: 使用<item>标签
<?xml version='1.0' encoding='iso-8859-1'?>
<tree id="0">
<item text="My Computer" id="1" child="1" im0="doc.gif" im1="my_opened.gif" im2="my_closed.gif">
</tree>
im0:没有儿子的节点图?
im1:打开节点的图?
im2:关闭节点的图?





构徏动态的?
如果你的树中包含大量的节?或者你q不惌Ҏ间来导入隐藏的节?.那么会有更好一点的Ҏ来导入节?针对q个效果我们使用xml创徏动态导入节点的深度.
察看章节:"使用XML导入数据"
或者更多的l节:在我的知识库中的文章"在dhtmltree V.1.x动态导入数?
操作节点:
在树对象的方法中很少的操作树节点的例?
<script>
tree=new dhtmlXTreeObject('treeboxbox_tree',"100%","100%",0);
...
var sID = tree.getSelectedItemId();//get id of selected node
tree.setLabel(sID,"New Label");//change label of selecte node
tree.setItemColor(sID,'blue','red');//set colors for selected node's label (for not selected state and for selected state)
tree.openItem(sID);//expand selected node
tree.closeItem(sID);//close selected node
tree.changeItemId(sID,100);//change id of selected node to 100
alert("This node has children: "+tree.hasChildren(100));//show alert with information if this node has children
</script>




序列?
序列化方法允许在XML表达式中得到?依靠反射直接序列化生成树
<script>
tree.setSerializationLevel(userDataFl,itemDetailsFl);
var myXmlStr = tree.serializeTree();

</script>
1.没有参数:id,open,select,text,child
2.userDataFI true-userdata
3.itemDetailsFI true -im0,im1,im2,acolor,scolor,checked,open




Tooltips:
q里有三U方法来l节点设|tooltips:
1.使用node label(text属?作ؓtooltip-enableAutoTooltips(mode) -默认为false
2.使用tooltip属?
3.setItemText(itemId,newLabel,newTooltip)




Ud节点:
依靠E序来移动节点可以采用下列方?
Udupp/down/left
tree.moveItem(nodeId,mode)
1."down":向下Ud节点(不需要注意层?
2."up":向上Ud节点
3:"left":向上一层移?




直接Ud到某个位|?(在树?
tree.moveItem(nodeId,mode,targetId)
1."item_child":节点置为第三个参数的子节点
2:"item_sibling":节点置为第三个参数的兄弟姐?
3.targetId:目标节点的id




Ud节点到某个位|?另外一个树)
tree.moveItem(nodeId,mode,targetId,targetTree)
targetId:目标节点的id
targetTree:目标?



剪切/_脓
使用doCut(),doPaste(id):但是只可以用到选择的item?
开发者可以在某个位置删除节点然后在另外一个位|创Z
而用户尽可能的用拖攑֊能来Ud元素




节点计数?
也有可能在节点的标签上显C儿子的个数,可以使用以下ҎȀzd:
<script>
tree.setChildCalcMode(mode);
</script>
可能的mode?
1."child":在该深度所有的儿子
2."leafs":在该深度所有的叶子
3:"childrec":所有的儿子
4:"leafsrec":所有的叶子
5:"disabled":什么也没有
其他相关的方?
_getChildCounterValue(itemId) - 得到当前计数器的?
setChildCalcHTML(before,after) - 改变计数器的?
当你在动态导入数据时如果你要使用计数,请在xml中用child属?




smart xml解析:
smart xml解析很简?在客L完整的树l构被导?但是仅仅昄被指定应该显C的.
q个会减少导入旉和大树的性能.与动态导入相?完整的树l构在大多数的scriptҎ中是可行?
例如Ҏ有节点的搜烦.Ȁzsmart xml parsing使用以下Ҏ:
<script>
tree.enableSmartXMLParsing(true);//false to disable
</script>
smart xml parsing如果在数被完全展开的时候不会执?





多选框:
dhtmlxTree支持三种状态的多选框.
三种状态ؓ:选择/不选择/一些子被选择(不是全部),Ȁzd选框使用以下Ҏ:
<script>
tree.enableThreeStateCheckboxes(true)//false为失?
</script>
多选框失效:disableCheckbox(id,state)
一些节点可以隐藏checkboxes:showItemCheckbox(id,state)(nocheckbox xml属?




拖放技?
有三U拖放模式setDragBehavior(mode)
1.拖ؓ儿子:"child"
2.拖ؓ姐妹:"sibling"
3.混合模式(previous要激z?:"complex"
加两个模?
1.公用的拖攑֤?
2.拯多个:tree.enableMercyDrag(1/0)
事g处理:Event handlers
在进行拖攑֤个前使用onDrug事g:setDragHandler(func)
如果func不能q回true,那么攑ְ会被取消
当放发生的时候会触发另外一个事件onDrop:使用setDropHandler(func)
在所有的event handlers中会?个参Clfunc对象
1.被拖的节点id
2.目标节点的id
3.如果放ؓ姐妹?前一个节点的id
4.被拖节点所属树
5.目标节点所属树
在iframes中的拖放:
在iframes中的拖放多个默认是可以的.
所有你需要额外做的就是在没有树存在的地方插入下列代码
<script src="js/dhtmlXCommon.js"></script>
<script>
new dhtmlDragAndDropObject();
</script>




考虑到dhtml的性能低下问题,我们介绍两种方式来提高性能
1.动态导?
2.smart XML 解析
认你的树有良好的组l?在同一个深度插入大量的元素会导致可见性的提升和性能的降?
菜单上下?
q里是在dhtmltree中创Z下文菜单
菜单的内容可以在XML/script中设?
因ؓ改变上下文的菜单内容依靠树元?
所以开发者可以实现相同菜单或者不同元素用不同菜单的隐藏/昄
菜单上下文的开启如?
<script>
//init menu
aMenu=new dhtmlXContextMenuObject('120',0,"Demo menu");
aMenu.menu.setGfxPath("../imgs/");
aMenu.menu.loadXML("menu/_context.xml");
aMenu.setContextMenuHandler(onMenuClick);

//init tree
tree=new dhtmlXTreeObject("treeboxbox_tree","100%","100%",0);
...
tree.enableContextMenu(aMenu); //link context menu to tree
function onMenuClick(id){
alert("Menu item "+id+" was clicked");
}
</script>





h节点
1.refreems(itemIdList,source)仅仅h节点列表(不包括他们的儿子)
2.refreem(itemId) ,h元素的儿?在这里自动导入将会被Ȁz?
节点排序:
你可以排序在dhtmlTree pro(必须使用dhtmlXTree_sb.js),使用以下Ҏ:
tree.sortTree(nodeId,order,all_levels);
1.nodeId:开始排序的父节?可以Ҏ|排序)
2.order:ASC/DES
3.all_levles:如果为true,则所有子都会执行
自定义排?
//define your comparator (in our case it compares second words in label)
function mySortFunc(idA,idB){
a=(tree.getItemText(idA)).split(" ")[1]||"";
b=(tree.getItemText(idB)).split(" ")[1]||"";
return ((a>b)?1:-1);
}
tree = new ...
//attach your comparator to the tree
tree.setCustomSortFunction(mySortFunc);
比较两个节点IDs,如果自定义比较被指定,则sortTree(...)Ҏ会使用?






搜烦功能:
dhtmlTree允许使用节点的lable来做查询d
也对Smart XML解析支持
tree.findItem(searchString); //find item next to current selection
tree.findItem(searchString,1,1)//find item previous to current selection
tree.findItem(searchString,0,1)//search from top





Multiline 树元?
允许昄在multiline模式.推荐使用关闭lines
tree.enableTreeLines(false);
tree.enableMultiLineItems(true);



树的Icon:
使用setItemImage,setItemImage2或者xml(im0,im1,im2 )
讑֮ICON的大?
<item ... imheight="Xpx" imwidth="Xpx"></item>
tree.setIconSize(w,h);//set global icon size
tree.setIconSize(w,h,itemId)//set icon size for particular item





在dhtmlTree中的错误处理
function myErrorHandler(type, desc, erData){
alert(erData[0].status)
}
dhtmlxError.catchError("ALL",myErrorHandler);
支持错误cd:
1."ALL"
2."LoadXML"
处理下列参数
type:string
desc:错误描述
erData:错误的相xl对?

cyantide 2008-06-12 14:31 发表评论
]]>
转蝲:面树Ş控gdhtmlxTree、mztreeview及xtree比较分析http://www.aygfsteel.com/cyantide/archive/2008/06/12/207376.htmlcyantidecyantideThu, 12 Jun 2008 06:25:00 GMThttp://www.aygfsteel.com/cyantide/archive/2008/06/12/207376.htmlhttp://www.aygfsteel.com/cyantide/comments/207376.htmlhttp://www.aygfsteel.com/cyantide/archive/2008/06/12/207376.html#Feedback0http://www.aygfsteel.com/cyantide/comments/commentRss/207376.htmlhttp://www.aygfsteel.com/cyantide/services/trackbacks/207376.html 作者:王力?(wallimn)
电邮Q?a href="mailto:wallimn@sohu.com">wallimn@sohu.com
博客Q?a >http://wallimn.bokee.com
   http://blog.csdn.net/wallimn
旉Q?006-11-21
/***********本h原创Q欢q{载,转蝲请保留本Z?************/
  q两天整B/S的东西要在网上用树来展C层ơ结构,ȝ上找了找Q找C个:xtree、mztreeview10(梅花雪树)以及dhtmlxTree.׃一些时间对q三个东西进行了一下测试分析?br />   1.dhtmxTree
  优点Q功能非常强Q尤其应Ҏ是动态变化的情况Q提供了大量的APIQ比如添加节炏V修改节Ҏ题样式及图标、CheckBox功能、节点的查找定位以及拖动Q树数据是从特定格式的XML文gQ或字符Ԍ中装载?br />   ~点Q正因ؓ功能非常强,所以效率有些低Q当节点数达1700多的时候,IE会出“装蝲旉q长Q是否l等?#8221;的提C,选l装载,可以装蝲完成Q但节点的展开非常的慢?br />   2.mztreeview1.0
  优点Q这个树q是很有特点的,它的数据是一ơ性加载、异步显C的Q也没有对cookieq行M的操作,效率很高Q据官方UͼMzTreeView 1.0 在节炚w三万至五万以上非常具有优ѝ?br />   ~点Q这个树好象不是设计用来满节点动态变化这个需求的Q应该主要设计用来展C结构层ơ定M的树。树的加载是通过调用document.write()来实现的?br />   3.xtree
  q个树跟2有些怼Q但多了一个在cookie中保存状态的功能Q刷新、前q又后退回去Q不会改变树的节点展开、关闭Ş态,也就说树会保持外观Ş态??的效率我没有q行试Q但分析应该?Z3吧。xtree我有同事用,说效率还可以Q比dtree强很多?br />   l论Q对要进行较多的操作Q树是动态变化的Q而节Ҏ又不太多的时候,dhtmxTree是不二的选择Q而树是静态不变的Q不需要在COOKIE中保存状态,那就用mztreeview了,mztreeview应对节点多的静态树有相当大的优势;xtree是三个品中唯一使用到cookie的,q是它的显著特点Q有q个需求,当然选它了?br />   我对dhtmlxTreeq行了一点小攚w,是加了个在选中节点前添加节点的功能Q原来只有添加ؓ后面的同U节Ҏ子节点的功能Q,q个应该是树节点d操作中常见的功能Q用dhtmlxTree又需要这个功能的朋友请与我联pR?nbsp;

cyantide 2008-06-12 14:25 发表评论
]]>
numbercd正则验证 (20,2)http://www.aygfsteel.com/cyantide/archive/2008/06/03/205574.htmlcyantidecyantideTue, 03 Jun 2008 07:44:00 GMThttp://www.aygfsteel.com/cyantide/archive/2008/06/03/205574.htmlhttp://www.aygfsteel.com/cyantide/comments/205574.htmlhttp://www.aygfsteel.com/cyantide/archive/2008/06/03/205574.html#Feedback0http://www.aygfsteel.com/cyantide/comments/commentRss/205574.htmlhttp://www.aygfsteel.com/cyantide/services/trackbacks/205574.html^(([1-9]\d{0,17})|0)(\.\d{1,2})?$



cyantide 2008-06-03 15:44 发表评论
]]>
window.open使用http://www.aygfsteel.com/cyantide/archive/2008/06/01/205164.htmlcyantidecyantideSun, 01 Jun 2008 08:45:00 GMThttp://www.aygfsteel.com/cyantide/archive/2008/06/01/205164.htmlhttp://www.aygfsteel.com/cyantide/comments/205164.htmlhttp://www.aygfsteel.com/cyantide/archive/2008/06/01/205164.html#Feedback0http://www.aygfsteel.com/cyantide/comments/commentRss/205164.htmlhttp://www.aygfsteel.com/cyantide/services/trackbacks/205164.html<SCRIPT LANGUAGE="javascript"> 
<!-- 
window.open ('page.html', 'newwindow', 'height=100, width=400, top=0, left=0, toolbar=no, menubar=no, scrollbars=no, resizable=no,location=no, status=no') 
--> 
</SCRIPT> 


解释Q?nbsp;
<SCRIPT LANGUAGE="javascript"> 
window.open 弹出新窗口的命oQ?
page.html 弹出H口的文件名Q?
newwindow 弹出H口的名?非必,可用I?'代替Q?
height=100 H口高度Q?
width=400 H口宽度Q?
top=0 H口距离屏幕上方的象素|
left=0 H口距离屏幕左侧的象素|
toolbar=no 是否昄工具栏,yes为显C;
menubarQscrollbars 表示菜单栏和滚动栏?
resizable=no 是否允许改变H口大小Qyes为允许;
location=no 是否昄地址栏,yes为允许;
status=no 是否昄状态栏内的信息Q通常是文件已l打开Q,yes为允许;
</SCRIPT>



cyantide 2008-06-01 16:45 发表评论
]]>
վ֩ģ壺 կ| ٰ| żҽ| | | ͬ| | ʯʨ| Ӣɽ| ¡| ŷ| | | ɽ| | Ӳ| | | | | | | | | ɽ| | ̫| | | | ں| | | ̨| Ϫ| ʼ| | | Դ| ƽ| |