http://www.blogjava.net/Jkallen/archive/2006/03/06/33886.aspx?Pending=true#Post以下是本人在程式碼中常用到的一些JS指令碼,雖然是一些簡單而又短小的function卻是幫了我不少的忙呢!希望對大家有些用,有了好的再貼上來 ^_^
1:在一帶到複雜的FRAME頁面中OPEN一個窗體來(當然不用什麼parent.parent啦)
function checkuser(name)
![](https://i.iter01.com/images/25889795f6bda64dbae7fd5e30b5bc45396b4c7c688d6b62859425dafa399020.gif)
{
window.open( " about:blank " , " zhutong " , 'menubar = 0 ,width = 350 ,height = 240 ,left = 230 ,top = 200 ,resizable = 0 ,scrollbars = auto');
window.document.forms['form1'].target = " zhutong " ;
window.document.forms['form1'].action = " Account/check.jsp?username= " + name;
window.document.forms['form1'].submit();
}
以下的LINK來觸發
<a href="javascript:checkuser(window.document.forms['SignUpForm'].name.value);">
<bean:message key="account.signup.input.name.check" />
</a>
當然下面的不能少啦!
</html:form>
<form name="form1" method="post" action="">
</form>
2:關閉一當前視窗,並且無關閉提示(這個功能太常用了)
<input type="submit" name="Submit" value="知道啦" onClick='window.opener = "xxx";
window.close();'>
3:讓一個連結自動提交:
如有一個連結:
<a href="xx.htm" name="multiuse">AAA</a>
則可以:
var urlfir = studyezurl + '/Authentication.do?actionid=ForgetPassword';
var urlsec = studyezurl + '/tempURL.do';
multiuse.href = urlsec;
multiuse.focus();
multiuse.click();
multiuse.href = urlfir; //這個好象不起作用,所以最好將此urlfir設成在href中的預設值
![](https://i.iter01.com/images/ea7a9e36beee9904d0abed517f411f79c70bbe9ef388f1aa08aeddcfee3f60cc.gif)
在STRUTS中有一個多個FRAME構成的系統.點選登出後想固定到某一頁面!(這個鬼費了我不少時間 ^_^ )
4:讓HTML也有JSP中的request.getParameter("");
HTML也可以通過JS來到得引數,函式如下(我將它儲存到了一個陣列裡面):
//--------------------------------------------------------------------------
//Name: GetArgsFromHref
//
//Pupers: the function will get the parameters from the server
//
//Parameter:
//sHref---->>the current URL
//sArgName---->>the Array store the name of parameters which you want to get
//
//Return: Array to store the result
//
//Author: Jkallen
//----------------------------------------------------------------------------
function GetArgsFromHref(sHref, sArgName)
![](https://i.iter01.com/images/25889795f6bda64dbae7fd5e30b5bc45396b4c7c688d6b62859425dafa399020.gif)
![](https://i.iter01.com/images/b3a3c90ea597da2ef6846e0ca789ed4a34a154f6bb1156718812038ba20fe282.gif)
{
var args = sHref.split("?");
var p_Result = new Array();
if(args[0] == sHref)
![](https://i.iter01.com/images/7fdfa8f6636b71f08e54f277ac81899a0a1e7c9ee71d0e9a1352461f6e23d75c.gif)
{
return p_Result;
}
var str = args[1];
args = str.split("&");
for(var i = 0; i < args.length; i ++)
![](https://i.iter01.com/images/7fdfa8f6636b71f08e54f277ac81899a0a1e7c9ee71d0e9a1352461f6e23d75c.gif)
{
str = args[i];
var arg = str.split("=");
if(arg.length <= 1)
continue;
if(sArgName != null)
![](https://i.iter01.com/images/7fdfa8f6636b71f08e54f277ac81899a0a1e7c9ee71d0e9a1352461f6e23d75c.gif)
{
for(var c1 = 0; c1 < sArgName.length; c1++)
![](https://i.iter01.com/images/7fdfa8f6636b71f08e54f277ac81899a0a1e7c9ee71d0e9a1352461f6e23d75c.gif)
{
var tempValue = arg[0];
if( tempValue == sArgName[c1])
p_Result[tempValue] = arg[1];
}
}//end if
}//end for
return p_Result;
}//end GetArgsFromHref
![](https://i.iter01.com/images/ea7a9e36beee9904d0abed517f411f79c70bbe9ef388f1aa08aeddcfee3f60cc.gif)
所以你以後就可以通過如:
var curCourseID = pValue[c_courseID];
的樣子來直接取了啦,c_courseID是引數名稱哦
5:在頁面動態顯示當前時間
![](https://i.iter01.com/images/25889795f6bda64dbae7fd5e30b5bc45396b4c7c688d6b62859425dafa399020.gif)
<span id="aa">當前時間</span><script>
setInterval("aa.innerHTML=new Date().toLocaleString()+' 星期'+'日一二三四五六'.charAt(new Date().getDay());",1000);
</script>
1000就表示了,每隔1000毫秒就更新一次aa裡面的內容.
6:對WEB頁面物件的常用操作,
.select() 選中物件(文字框)的內容
.focus() 讓某個物件獲取焦點
checked 檢查單選按鈕是否處於選中狀態
若存的是一組單選按鈕,根據document的一些方法:
getElementById 獲取對 ID 標籤屬性為指定值的第一個物件的引用。
getElementsByName 根據 NAME 標籤屬性的值獲取物件的集合。
getElementsByTagName 獲取基於指定元素名稱的物件集合。
可以用getElementsByName來解決,它是取得一些同名物件的集合,與getElementById(指定值的第一個物件的引用)不同.如下所示:
var tmppara = document.getElementsByName("para"+i);
var j=0;
![](https://i.iter01.com/images/25889795f6bda64dbae7fd5e30b5bc45396b4c7c688d6b62859425dafa399020.gif)
for(;j<tmppara.length;j++)
{
![](https://i.iter01.com/images/7fdfa8f6636b71f08e54f277ac81899a0a1e7c9ee71d0e9a1352461f6e23d75c.gif)
if(tmppara[j].checked)
{
values[cur_index] = tmppara[j].value;
cur_index++;
}
}
7:確定下拉框的值:
<script language="javascript">
![](https://i.iter01.com/images/25889795f6bda64dbae7fd5e30b5bc45396b4c7c688d6b62859425dafa399020.gif)
function test()
{
var se = document.form1.select;
![](https://i.iter01.com/images/7fdfa8f6636b71f08e54f277ac81899a0a1e7c9ee71d0e9a1352461f6e23d75c.gif)
for(i=0;i<se.length;i++)
{
![](https://i.iter01.com/images/7fdfa8f6636b71f08e54f277ac81899a0a1e7c9ee71d0e9a1352461f6e23d75c.gif)
if(se.options[i].value == 55)
{
se.options[i].selected=true;
break;
}
}
}
</script>
HTML 如下:
<form id="form1" name="form1" method="post" action="">
<select name="select">
<option value="11" selected="">11</option>
<option value="22">22</option>
<option value="33">33</option>
<option value="44">44</option>
<option value="55">55</option>
</select>
</form>
刪除其中的一個option:
se.options.remove(1);
其中引數1表示下標
8:使得某一物件不可用(可用剛改成false)
document.form1.submit2.disabled=true;
使得某一物件不可見(可見則改成visible)
document.form1.submit2.style.visibility="hidden";
9:日期以'yyyy-mm-dd'(2006-09-07 or 2006-9-17)
function chkdate(value)
![](https://i.iter01.com/images/25889795f6bda64dbae7fd5e30b5bc45396b4c7c688d6b62859425dafa399020.gif)
![](https://i.iter01.com/images/b3a3c90ea597da2ef6846e0ca789ed4a34a154f6bb1156718812038ba20fe282.gif)
{
var datestr;
datestr=value;
var lthdatestr;
if (datestr != "")
![](https://i.iter01.com/images/7fdfa8f6636b71f08e54f277ac81899a0a1e7c9ee71d0e9a1352461f6e23d75c.gif)
{lthdatestr= datestr.length} ;
else
![](https://i.iter01.com/images/7fdfa8f6636b71f08e54f277ac81899a0a1e7c9ee71d0e9a1352461f6e23d75c.gif)
{lthdatestr=0};
var tmpy="";
var tmpm="";
var tmpd="";
var status;
status=0;
if ( lthdatestr== 0)
![](https://i.iter01.com/images/7fdfa8f6636b71f08e54f277ac81899a0a1e7c9ee71d0e9a1352461f6e23d75c.gif)
{return (false)};
for (i=0;i<lthdatestr;i++)
![](https://i.iter01.com/images/7fdfa8f6636b71f08e54f277ac81899a0a1e7c9ee71d0e9a1352461f6e23d75c.gif)
{ if (datestr.charAt(i)== '-')
![](https://i.iter01.com/images/7fdfa8f6636b71f08e54f277ac81899a0a1e7c9ee71d0e9a1352461f6e23d75c.gif)
{
status++;
}
if (status>2)
![](https://i.iter01.com/images/7fdfa8f6636b71f08e54f277ac81899a0a1e7c9ee71d0e9a1352461f6e23d75c.gif)
{
return (false);
}
if ((status==0) && (datestr.charAt(i)!='-'))
![](https://i.iter01.com/images/7fdfa8f6636b71f08e54f277ac81899a0a1e7c9ee71d0e9a1352461f6e23d75c.gif)
{
tmpy=tmpy+datestr.charAt(i);
}
if ((status==1) && (datestr.charAt(i)!='-'))
![](https://i.iter01.com/images/7fdfa8f6636b71f08e54f277ac81899a0a1e7c9ee71d0e9a1352461f6e23d75c.gif)
{
tmpm=tmpm+datestr.charAt(i);
}
if ((status==2) && (datestr.charAt(i)!='-'))
![](https://i.iter01.com/images/7fdfa8f6636b71f08e54f277ac81899a0a1e7c9ee71d0e9a1352461f6e23d75c.gif)
{
tmpd=tmpd+datestr.charAt(i);
}
![](https://i.iter01.com/images/07fabeb0a4a77f8972233635ec01e28ddfeecaabb2c033a49f05fe7450a67352.gif)
}
year=new String (tmpy);
month=new String (tmpm);
day=new String (tmpd);
if ((tmpy.length!=4) || (tmpm.length>2 || tmpm.length<1) || (tmpd.length!=2))
![](https://i.iter01.com/images/7fdfa8f6636b71f08e54f277ac81899a0a1e7c9ee71d0e9a1352461f6e23d75c.gif)
{
return (false);
}
if (!((1<=month) && (12>=month) && (31>=day) && (1<=day)) )
![](https://i.iter01.com/images/7fdfa8f6636b71f08e54f277ac81899a0a1e7c9ee71d0e9a1352461f6e23d75c.gif)
{
return (false);
}
if (!((year % 4)==0) && (month==2) && (day==29))
![](https://i.iter01.com/images/7fdfa8f6636b71f08e54f277ac81899a0a1e7c9ee71d0e9a1352461f6e23d75c.gif)
{
return (false);
}
if ((month<=7) && ((month % 2)==0) && (day>=31))
![](https://i.iter01.com/images/7fdfa8f6636b71f08e54f277ac81899a0a1e7c9ee71d0e9a1352461f6e23d75c.gif)
{
return (false);
}
if ((month>=8) && ((month % 2)==1) && (day>=31))
![](https://i.iter01.com/images/7fdfa8f6636b71f08e54f277ac81899a0a1e7c9ee71d0e9a1352461f6e23d75c.gif)
{
return (false);
}
if ((month==2) && (day==30))
![](https://i.iter01.com/images/7fdfa8f6636b71f08e54f277ac81899a0a1e7c9ee71d0e9a1352461f6e23d75c.gif)
{
return (false);
}
return (true);
}
再加一個比較函式,剛剛寫的
![](https://i.iter01.com/images/25889795f6bda64dbae7fd5e30b5bc45396b4c7c688d6b62859425dafa399020.gif)
/**//************************************************************
*將yyyy-mm-dd的日期型資料換成數字型以比較大小 add by zhangyinxin
*****************************************************************/
![](https://i.iter01.com/images/25889795f6bda64dbae7fd5e30b5bc45396b4c7c688d6b62859425dafa399020.gif)
function changDate2Num(date)
{
var tmp = date.split('-') ;
var result;
![](https://i.iter01.com/images/7fdfa8f6636b71f08e54f277ac81899a0a1e7c9ee71d0e9a1352461f6e23d75c.gif)
if(tmp.length<=0)
{
alert('日期格式(yyyy-mm-dd)不正確!');
![](https://i.iter01.com/images/7fdfa8f6636b71f08e54f277ac81899a0a1e7c9ee71d0e9a1352461f6e23d75c.gif)
}else
{
result = tmp[0];
if(tmp[1].length<2) tmp[1] = "0"+tmp[1];
result += tmp[1];
if(tmp[2].length<2) tmp[2] = "0"+tmp[2];
result += tmp[2];
}
// alert(result);
return tmp;
}
10:對一組單選按鈕的處理---是否選中or返回選中值
function getValueofCheckBoxSelected_this(dyfs)
![](https://i.iter01.com/images/25889795f6bda64dbae7fd5e30b5bc45396b4c7c688d6b62859425dafa399020.gif)
![](https://i.iter01.com/images/b3a3c90ea597da2ef6846e0ca789ed4a34a154f6bb1156718812038ba20fe282.gif)
{
var controlarray = document.getElementsByName(dyfs);
if(controlarray==null||controlarray.length==0)
return false;
for (var i=0; i<controlarray.length; i++)
![](https://i.iter01.com/images/7fdfa8f6636b71f08e54f277ac81899a0a1e7c9ee71d0e9a1352461f6e23d75c.gif)
{
if(controlarray[i].checked)
return controlarray[i].value;
//如果要返回是否選中,這兒返回true啦,下面返回false
}
return null;
}
11,從A頁面開啟一個頁面B,從B中輸入相關資訊後再從B頁面把資訊傳到A頁面處理:
從A頁面開啟B頁面的方法:
![](https://i.iter01.com/images/25889795f6bda64dbae7fd5e30b5bc45396b4c7c688d6b62859425dafa399020.gif)
function addPersonInfo()
{
var obj = window;
var url = "<%=contextpath%>/jsp/addinfo.jsp";
window.showModalDialog(url,obj,'dialogwidth=500px; dialogheight=300px;status=no; help=no');
}
主要是其中的obj引數起作用.然後在B頁面 中返回:
![](https://i.iter01.com/images/ea7a9e36beee9904d0abed517f411f79c70bbe9ef388f1aa08aeddcfee3f60cc.gif)
.
var obj = window.dialogArguments;
obj.addRow(username,phone,email);
window.close();
![](https://i.iter01.com/images/ea7a9e36beee9904d0abed517f411f79c70bbe9ef388f1aa08aeddcfee3f60cc.gif)
![](https://i.iter01.com/images/077790aab985d85c4151289b7bd5f13f08bed32be55a175539d312b0ff63de1e.gif)
![](https://i.iter01.com/images/077790aab985d85c4151289b7bd5f13f08bed32be55a175539d312b0ff63de1e.gif)
注意這兒只取了主要部分:username,phone,emial均是在B頁面取得一些資訊obj.addRow()中addRow是A頁面中定義的,如下:
![](https://i.iter01.com/images/25889795f6bda64dbae7fd5e30b5bc45396b4c7c688d6b62859425dafa399020.gif)
/**//******************************************************************
@name addRow---為******增加一行
@parameters null
@retrun null
@author zhangyinxin
******************************************************************/
![](https://i.iter01.com/images/25889795f6bda64dbae7fd5e30b5bc45396b4c7c688d6b62859425dafa399020.gif)
function addRow(name,phone,email)
{
do something......
}
12:得用JS在WEB頁面中動態增加行列:
這裡主要用到了innerHTML, cells,rows,appendChild等一些方法與屬性有了它們基本上就OK了,更多可以參考HTML的參考手冊,可以做到如在DW更改介面一樣,感覺很爽(比如更改物件的title ,id ,style, name)!
dateTr = document.getElementById("tr_name");//它實際上是一列也就是<tr></tr>'tr_name'是我自定義
NewTr = document.all.dyzmx.cloneNode(true);
NewTr.style.display = "block";
var cur_lxr_xm = dateTr.parentNode.rows[1].cells[1].innerHTML;
dateTr.parentNode.appendChild(NewTr.cloneNode(true));
var added_new_tr = dateTr.parentNode.lastChild;
..
主要用到了cloneNode方法,其它更多可以參考關於HTML的物件介紹,然後再通過appendChild來增加一行(在此是增加一行).當然也可以自己定義一些元素來初始化innerHTML,as :
html = " <INPUT type=text style=/"width:30px;/" value="+k+" name=/"rwbh/" maxlength=3>";
start.getElementsByTagName("tr")[k].firstChild.innerHTML = html;
順便說一下關於刪除:
var child_len = dateTr.parentNode.rows.length-1;
![](https://i.iter01.com/images/25889795f6bda64dbae7fd5e30b5bc45396b4c7c688d6b62859425dafa399020.gif)
for(c2=child_len; c2>0; c2--)
{
var rows = [];
if(name=='lxr')
![](https://i.iter01.com/images/7fdfa8f6636b71f08e54f277ac81899a0a1e7c9ee71d0e9a1352461f6e23d75c.gif)
if(dateTr.parentNode.rows[c2].title=='lxr_data')
{
rows.push(dateTr.parentNode.rows[c2]);
![](https://i.iter01.com/images/7fdfa8f6636b71f08e54f277ac81899a0a1e7c9ee71d0e9a1352461f6e23d75c.gif)
for(var i=0;i<rows.length;i++)
{
rows[i].parentNode.removeChild(rows[i]);
}
}
}
注意這種方法刪除時,一不小心不犯錯了.一方面for(c2=child_len; c2>0; c2--)應該是遞減的方式來遍歷(因為rows裡面push的時候,與刪除的時候節點是反向的,當然假如取rows的時候反向取也OK的),另一方面 dateTr.parentNode.rows.length-1不可以直接放到for裡面(因為 dateTr.parentNode.rows.length-1的長值每在for裡面跑一次就變一次,當然是變小啦).
所以也可以如下處理:
![](https://i.iter01.com/images/25889795f6bda64dbae7fd5e30b5bc45396b4c7c688d6b62859425dafa399020.gif)
/**//******************************************************************
@name delRow---為******刪除選項中行
@parameters null
@retrun null
@author zhangyinxin
******************************************************************/
![](https://i.iter01.com/images/25889795f6bda64dbae7fd5e30b5bc45396b4c7c688d6b62859425dafa399020.gif)
function delRow()
{
var checkboxs = document.getElementsByName("checkspecial");
var rows = [];
![](https://i.iter01.com/images/7fdfa8f6636b71f08e54f277ac81899a0a1e7c9ee71d0e9a1352461f6e23d75c.gif)
for(var i=0;i<checkboxs.length;i++)
{
![](https://i.iter01.com/images/7fdfa8f6636b71f08e54f277ac81899a0a1e7c9ee71d0e9a1352461f6e23d75c.gif)
if(checkboxs[i].checked && checkboxs[i].parentNode.parentNode.title!='tmp')
{
rows.push(checkboxs[i].parentNode.parentNode);
}
}
![](https://i.iter01.com/images/7fdfa8f6636b71f08e54f277ac81899a0a1e7c9ee71d0e9a1352461f6e23d75c.gif)
for(var i=0;i<rows.length;i++)
{
rows[i].parentNode.removeChild(rows[i]);
}
}
我這兒用到了核取方塊,當然這並不影響刪除的效果實現,它不過是一種刪除條件罷了(比如title也是哦)
13:第一次見到這樣的自定義函式:
![](https://i.iter01.com/images/25889795f6bda64dbae7fd5e30b5bc45396b4c7c688d6b62859425dafa399020.gif)
function $()
{
var elements = new Array();
![](https://i.iter01.com/images/07fabeb0a4a77f8972233635ec01e28ddfeecaabb2c033a49f05fe7450a67352.gif)
![](https://i.iter01.com/images/7fdfa8f6636b71f08e54f277ac81899a0a1e7c9ee71d0e9a1352461f6e23d75c.gif)
for (var i = 0; i < arguments.length; i++)
{
var element = arguments[i];
if (typeof element == 'string')
element = document.getElementById(element);
![](https://i.iter01.com/images/07fabeb0a4a77f8972233635ec01e28ddfeecaabb2c033a49f05fe7450a67352.gif)
if (arguments.length == 1)
return element;
![](https://i.iter01.com/images/07fabeb0a4a77f8972233635ec01e28ddfeecaabb2c033a49f05fe7450a67352.gif)
elements.push(element);
}
![](https://i.iter01.com/images/07fabeb0a4a77f8972233635ec01e28ddfeecaabb2c033a49f05fe7450a67352.gif)
return elements;
}
![](https://i.iter01.com/images/ea7a9e36beee9904d0abed517f411f79c70bbe9ef388f1aa08aeddcfee3f60cc.gif)
![](https://i.iter01.com/images/ea7a9e36beee9904d0abed517f411f79c70bbe9ef388f1aa08aeddcfee3f60cc.gif)
應用如下:
![](https://i.iter01.com/images/25889795f6bda64dbae7fd5e30b5bc45396b4c7c688d6b62859425dafa399020.gif)
this.removeRow = function(_id)
{
var row = $(this.id + "_row_"+_id);
if(!row)return;
row.parentNode.removeChild(row);
}
感覺蠻不錯!
呵呵 我一天添一些JS上來,可惜朋友們看不到,因為這"貼子"沉下去了.沒辦法,可是它們真的幫我不少忙,我自己的也常到這兒來取經....
... ....
posted on 2006-03-06 17:05 Jkallen 閱讀(337) 評論(2) 編輯 收藏 收藏至365Key 所屬分類: AJAX
![](https://i.iter01.com/images/2ad96be81255c4d6d58edfac50e3c2bc45df39a8dbd1546df79ad8c5e8ca4191.jpg)
FeedBack:
2006-03-06 21:27 | function checkuser(name)
{
window.open("about:blank","zhutong", 'menubar=0,width=350,height=240,left=230,top=200,resizable=0,scrollbars=auto');
window.document.forms['form1'].target = "zhutong";
window.document.forms['form1'].action = "Account/check.jsp?username="+name;
window.document.forms['form1'].submit();
}
可以改成這樣
function checkuser(name)
{
window.open("Account/check.jsp?username="+name,"zhutong", 'menubar=0,width=350,height=240,left=230,top=200,resizable=0,scrollbars=auto');
}
<a href="javascript:checkuser(window.document.forms['SignUpForm'].name.value);">
<bean:message key="account.signup.input.name.check" />
</a>
這個可以改成這樣
<a href="javascript:checkuser(SignUpForm.name.value);">
<bean:message key="account.signup.input.name.check" />
</a>