/************************************************************* * 全局变量 *************************************************************/ //是否支持数据表格的 mouseover 和 mouseout 效果 var is_datatable_mouse = true; //是否以TAB效果方式显示界面 var is_showtab_mode = true; /************************************************************* * loadUI *************************************************************/ function loadUI(){ //装载数据表格 loadUI_datatable(); //装载 button 的效果 loadUI_formobj(); //装载 tab 效果 loadUI_tab(); } /************************************************************* * loadUI_tab *************************************************************/ //装载 tab 的效果 function loadUI_tab(){ if(!is_showtab_mode||null == $("tabBox")){ return; } //最大TAB数 var maxTabCount = 20; //最终要插入TAB区的代码 var overTabHtml = ' '; var tabTableBegin = ""; tabTableBegin += ''; tabTableBegin += ''; tabTableBegin += ' '; tabTableEnd += ''; tabTableEnd += '
'; tabTableBegin += ' '; tabTableBegin += ' '; var tabTableEnd = ""; tabTableEnd += ' '; tabTableEnd += '
 
'; tabTableEnd += '
'; //第一个标题区的对象 var firstTitleObj ; for(var i = 1;i<=maxTabCount;i++){ var tabObj = $("p" + i); if(null == tabObj){ break; } //取得标题对象 就是p1这样的表格之前的一个表格 var titleObj = getPreviousSibling(tabObj); if(i==1){ firstTitleObj = getPreviousSibling(tabObj); } //隐藏 标题行,还有对应的内容 titleObj.style.display="none"; tabObj.style.display="none"; //标题行,p1_btn 的所在TD var btnTD = $("p" + i + "_btn"); //ICON图标 var btnTDIcon = btnTD.innerHTML; //
 
//标题 var btnNameText = getNextSibling(btnTD).innerHTML; // 基本信息 //alert(btnTDIcon + btnNameText); var tabInnerHTMLTemplet = ''; tabInnerHTMLTemplet += ''; tabInnerHTMLTemplet += ' '; tabInnerHTMLTemplet += ' '; tabInnerHTMLTemplet += ' '; tabInnerHTMLTemplet += ' '; tabInnerHTMLTemplet += ' '; tabInnerHTMLTemplet += '
TEMPLET_ICONTEMPLET_TITLE
'; tabInnerHTMLTemplet += ' '; overTabHtml += tabInnerHTMLTemplet; overTabHtml = overTabHtml.replaceAll("NUM",i); //第几个TAB overTabHtml = overTabHtml.replaceAll("TEMPLET_TITLE_COUNT_",btnNameText.length); //CSS,TITLE汉字的个数 overTabHtml = overTabHtml.replaceAll("TEMPLET_ICON",btnTDIcon); //icon overTabHtml = overTabHtml.replaceAll("TEMPLET_TITLE",btnNameText); //标题 } //显示tab $("tabBox").innerHTML = tabTableBegin + overTabHtml + tabTableEnd; //选择第1个tab selectTab(1); } //选择第N个TAB,N是从1开始计数 function selectTab(index){ var tabObj = $("tab_title_" + index); if(null != tabObj){ //之前选择的是哪一个,并处理 var oldSelectValue = $("currSelectTabIndex").value; if(oldSelectValue > 0){ //隐藏之前选择的内容 var oldTabObjContent = $("p" + oldSelectValue); if(null != oldTabObjContent){ oldTabObjContent.style.display="none"; } //改变之前选择的tab的样式 var oldTabObj = $("tab_title_" + oldSelectValue); if(null != oldTabObj){ oldTabObj.className = oldTabObj.className.replaceAll("mouseover","mouseout"); } } //当前选择的,并处理 $("currSelectTabIndex").value=index; var currClassName = tabObj.className; tabObj.className = currClassName.replaceAll("mouseout","mouseover"); //显示对应的内容 var tabObj = $("p" + index); if(null != tabObj){ tabObj.style.display=""; } } } //tab的onmouseover function tabOnMouseOver(obj){ if(obj.className.indexOf("mouseover") < 0){ obj.className = obj.className.replaceAll("mouseout","mouseover"); } } //tab的onmouseout function tabOnMouseOut(obj){ //当前应该选择的是第几个 var selectedIndex = $("currSelectTabIndex").value; //当前TAB的ID var tabID = obj.id.substring("tab_title_".length); if(selectedIndex != tabID){ obj.className = obj.className.replaceAll("mouseover","mouseout"); } } //tab的onmouseout function tabOnClick(obj){ //当前TAB的ID var tabIndex = obj.id.substring("tab_title_".length); //选择 selectTab(tabIndex); } /************************************************************* * loadUI_formobj *************************************************************/ //装载 button 的效果 function loadUI_formobj(){ var allFormObj = document.getElementsByTagName("input"); //alert(document.body.innerHTML); //alert(allFormObj.length); for(var i = 0; i < allFormObj.length;i++){ //alert(allFormObj[i].type + "|" + allFormObj[i].id); if(null==allFormObj[i].isExeUiJs||allFormObj[i].isExeUiJs=="true"){ if(allFormObj[i].type=="button" || allFormObj[i].type=="submit"){ allFormObj[i].onmouseover=function(){buttonOnMouseOver(this)}; allFormObj[i].onmouseout=function(){buttonOnMouseOut(this)}; }else if(allFormObj[i].type=="text" || allFormObj[i].type=="password"){ allFormObj[i].onfocus=function(){inputOnFocus(this)}; allFormObj[i].onblur=function(){inputOnBlur(this)}; } } } allFormObj = document.getElementsByTagName("textarea"); for(var i = 0; i < allFormObj.length;i++){ //alert(allFormObj[i].type + "|" + allFormObj[i].id); if(null==allFormObj[i].isExeUiJs||allFormObj[i].isExeUiJs=="true"){ allFormObj[i].onfocus=function(){inputOnFocus(this)}; allFormObj[i].onblur=function(){inputOnBlur(this)}; } } } //button的onmouseover function buttonOnMouseOver(obj){ var objID = obj.id; if(null == objID){ //得不到id,就取name objID = obj.name; } if(objID.length==2 && objID.indexOf("b") == 0){ //如果ID是2个字母的,且以b开始的 // onMouseOver="this.className='b7_add_article_1_m'" onMouseOut="this.className='b7_add_article_1'" //alert(obj.className); obj.className = obj.className + "_m"; } } //button的onmouseout function buttonOnMouseOut(obj){ var objID = obj.id; if(null == objID){ //得不到id,就取name objID = obj.name; } if(objID.length==2 && objID.indexOf("b") == 0){ //如果ID是2个字母的,且以b开始的 obj.className = obj.className.substring(0,obj.className.length-2); //去掉后面的_m } } //input 的onfocus function inputOnFocus(obj){ obj.className = obj.className + "_m"; } //input 的onblur function inputOnBlur(obj){ obj.className = obj.className.substring(0,obj.className.length-2); //去掉后面的_m } /************************************************************* * loadUI_datatable *************************************************************/ //装载数据表格的效果 function loadUI_datatable(){ var dtObj = $("datatable"); if(null == dtObj){ return; } for(var i = 0;i < dtObj.rows.length;i++){ if(i==0){ //第一行不添加事件 continue; } //alert(dtObj.rows(i)); if(is_datatable_mouse){ //只是设置成 支持 效果,才应用 dtObj.rows[i].onmouseover=function(){datatableOnMouseOver(this)}; dtObj.rows[i].onmouseout=function(){datatableOnMouseOut(this)}; } dtObj.rows[i].onclick=function(){datatableOnClick(this)}; } } //数据表格 onmouseover function datatableOnMouseOver(obj){ if(obj.className == "table-cell-click"){ return; } obj.className = "table-cell-mouseover"; /** var tdObj = obj.cells; for(var i = 0;i < tdObj.length;i++){ if(tdObj[i].className == "table-cell-click"){ break; } tdObj[i].className = 'table-cell-mouseover'; } **/ } //数据表格 onmouseout function datatableOnMouseOut(obj){ if(obj.className == "table-cell-click"){ return; } obj.className = 'table-cell'; /** var tdObj = obj.cells; for(var i = 0;i < tdObj.length;i++){ if(tdObj[i].className == "table-cell-click"){ break; } tdObj[i].className = 'table-cell'; } **/ } //数据表格 onclick function datatableOnClick(obj){ var tdObj = obj.cells; //当前是否为选中状态 var tdClassName = "table-cell-click"; var checkBoxState = "checked"; if(tdObj[0].className == "table-cell-click"){ tdClassName = "table-cell"; checkBoxState = false; } if(tdObj[0].innerHTML != ""){ //如果第一列,是一个checkbox,则选中 if(tdObj[0].childNodes[0].type=="checkbox"){ tdObj[0].childNodes[0].checked = checkBoxState; } } for(var i = 0;i < tdObj.length;i++){ tdObj[i].className = tdClassName; } //取消全选 unselectall('selectAll'); } /************************************************************* * 其它综合类JS *************************************************************/ function $(emtID){ var obj = document.getElementById(emtID); return obj; } String.prototype.replaceAll = stringReplaceAll; function stringReplaceAll(AFindText,ARepText){ var raRegExp = new RegExp(AFindText,"g") return this.replace(raRegExp,ARepText) } //ex参数存储了在同一个form中可以被排除不用被checked的对象名。使得from中的checkbox不至于全部被选择 //ex可以由多个参数组成,即可以指定任意多个 function checkAllEx(form,ex){ var firstCheckBox; //第一个checkbox,我们将第一个checkbox视为全选的,当然也有特例情况 for (var i=0;i < form.elements.length;i++){ var e = form.elements[i]; var trueChecked = true; for (var j=1;j < arguments.length;j++){ if(e.name == arguments[j]){ trueChecked = false; break; } } if(e.type=="checkbox" && trueChecked){ //第一遇遇到checkbox,就以这个为全选checkbox if(null == firstCheckBox){ firstCheckBox = form.elements[i]; continue; }else{ if(e.parentNode.parentNode.tagName == "TR"){//如果checkbox在一个tr中,并且不是第一个tr,则应用TR的点击效果 //当前是否为选中状态 var tdClassName = "table-cell"; if(firstCheckBox.checked){ tdClassName = "table-cell-click"; } var tdObj = e.parentNode.parentNode.cells; for(var j = 0;j < tdObj.length;j++){ tdObj[j].className = tdClassName; } } } if (e.name != firstCheckBox.name && e.disabled == false){ e.checked = firstCheckBox.checked; } } } } //全选(checkbox) function checkAll(form){ var firstCheckBox; //第一个checkbox,我们将第一个checkbox视为全选的,当然也有特例情况 for (var i=0;i < form.elements.length;i++){ var e = form.elements[i]; if(e.type=="checkbox"){ //第一遇遇到checkbox,就以这个为全选checkbox if(null == firstCheckBox){ firstCheckBox = form.elements[i]; continue; }else{ if(e.parentNode.parentNode.tagName == "TR"){//如果checkbox在一个tr中,并且不是第一个tr,则应用TR的点击效果 //当前是否为选中状态 var tdClassName = "table-cell"; if(firstCheckBox.checked){ tdClassName = "table-cell-click"; } var tdObj = e.parentNode.parentNode.cells; for(var j = 0;j < tdObj.length;j++){ tdObj[j].className = tdClassName; } } } if (e.name != firstCheckBox.name && e.disabled == false){ e.checked = firstCheckBox.checked; } } } } //全选(checkbox) function checkAllForCheckBox(element,evt){ if(element.elements){ checkAll(element); }else{ var evtObj = window.event?window.event:evt; //事件FF下事件获取的另一种方法arguments.callee.caller.arguments[0]但不知道是否通用 var eSource = evtObj.srcElement||evtObj.target; //事件源 if(element==null) return; if (element.Name != eSource.name && element.disabled == false) element.checked = eSource.checked; for (var i=0;i < element.length;i++){ var e = element[i]; if (e.Name != eSource.name && e.disabled == false) e.checked = eSource.checked; } } } //取消全选(checkbox) function unselectall(checkBoxID){ var selectAllObj = $(checkBoxID); if(null == selectAllObj){ return; } if(selectAllObj.checked){ selectAllObj.checked = selectAllObj.checked&0; } } //兼容ie和ff的,取一个对象的上一个对象的方法 function getPreviousSibling(obj){ var prevObj = obj.previousSibling; for(var i = 0;i<1000;i++){ //不用死循环,防止真的出现 //在IE下会忽略回车和换行。FF下不会忽略。 nodeType = 3是文本节点 nodeType = 1是html节点 if(prevObj.nodeType==1){ return prevObj; } prevObj = prevObj.previousSibling; } } //兼容ie和ff的,取一个对象的下一个对象的方法 function getNextSibling(obj){ var nextObj = obj.nextSibling; for(var i = 0;i<1000;i++){ //不用死循环,防止真的出现 //在IE下会忽略回车和换行。FF下不会忽略。 nodeType = 3是文本节点 nodeType = 1是html节点 if(nextObj.nodeType==1){ return nextObj; } nextObj = nextObj.nextSibling; } }