javascript setTimeout()傳遞函數(shù)參數(shù)(包括傳遞對象參數(shù))
更新時間:2010年04月07日 12:03:49 作者:
由于需要,我要用到setTimeout()并且在里邊的函數(shù)參數(shù)傳遞一個參數(shù),就像這樣setTimeout("fun(參數(shù))", 1000)。但是以我這種寫法,js會報錯,說‘參數(shù)’未定義。
于是,上網(wǎng)查找了一下,用了另一種寫法setTimeout("fun("+參數(shù)+")", 1000),還是不行,但是以上寫法在傳遞form表單的textarea是可以的,比如hml是這樣:
<body>
<div class="main">
<div id="showpane" class="showpane"> </div>
<div class="textarea">
<form method="post" action="" name="sform">
<textarea name="txtara"></textarea>
<div>
<input type="submit" name="subt" value="send" onclick="doAjax(sform.txtara.value);return false;"/>
</div>
</form>
</div>
</div>
</body>
在js里邊我可以這樣子寫:
setTimeout("doAjax(document.sform.txtara.value )", 1000);
但是一旦要傳遞其他什么參數(shù)或者是對象參數(shù),按照網(wǎng)上提供的方法就是要重寫這個函數(shù)了。
經(jīng)過研究和實踐,我自己改進了方法,大家可以參考借鑒一下,我只是依據(jù)我的個人需要,其他情況我也不能保證,請多多指教!
<body>
<div class="main">
<div id="showpane" class="showpane">
</div>
<div class="textarea">
<form method="post" action="" name="sform">
<textarea name="txtara"></textarea>
<div>
<input type="submit" name="subt" value="send" onclick="doAjax(sform.txtara.value, this);return false;"/>
</div>
</form>
</div>
</div>
</body>
JavaScript:
function initAjax() {
var httprequest=null;
try {
httprequest=new ActiveXObject("Msxml2.XMLHTTP");
}
catch (e) {
try {
httprequest=new ActiveXObject("Microsoft.XMLHTTP");
}
catch (e) {
try {
httprequest=new XMLHttpRequest();
}
catch (e) {
httprequest=null;
}
}
}
return httprequest;
}
function doAjax( msg, obj ) {
var obj=obj; //主要是這一行
alert( obj.value);
var he="he="+msg;
var ajaxrequest=initAjax();
ajaxrequest.open("POST", "abc.jsp", true);
ajaxrequest.setRequestHeader( "Content-Type", "application/x-www-form-urlencoded;charset=utf-8");
ajaxrequest.send(he);
ajaxrequest.onreadystatechange=function() {
if (ajaxrequest.readyState==4) {
if (ajaxrequest.status==200) {
document.getElementById("showpane").innerHTML=ajaxrequest.responseText;
}
else {
doAjax( msg );
}
}
}
setTimeout("doAjax(document.sform.txtara.value,document.all["+obj.sourceIndex+"])", 100);//還有這一行
}
就這樣,我解決了對象參數(shù)傳遞的問題,最后想說一句,能有更好的解決方法請作評論提出來,本人樂意與志同道合者學習!
復制代碼 代碼如下:
<body>
<div class="main">
<div id="showpane" class="showpane"> </div>
<div class="textarea">
<form method="post" action="" name="sform">
<textarea name="txtara"></textarea>
<div>
<input type="submit" name="subt" value="send" onclick="doAjax(sform.txtara.value);return false;"/>
</div>
</form>
</div>
</div>
</body>
在js里邊我可以這樣子寫:
setTimeout("doAjax(document.sform.txtara.value )", 1000);
但是一旦要傳遞其他什么參數(shù)或者是對象參數(shù),按照網(wǎng)上提供的方法就是要重寫這個函數(shù)了。
經(jīng)過研究和實踐,我自己改進了方法,大家可以參考借鑒一下,我只是依據(jù)我的個人需要,其他情況我也不能保證,請多多指教!
復制代碼 代碼如下:
<body>
<div class="main">
<div id="showpane" class="showpane">
</div>
<div class="textarea">
<form method="post" action="" name="sform">
<textarea name="txtara"></textarea>
<div>
<input type="submit" name="subt" value="send" onclick="doAjax(sform.txtara.value, this);return false;"/>
</div>
</form>
</div>
</div>
</body>
JavaScript:
復制代碼 代碼如下:
function initAjax() {
var httprequest=null;
try {
httprequest=new ActiveXObject("Msxml2.XMLHTTP");
}
catch (e) {
try {
httprequest=new ActiveXObject("Microsoft.XMLHTTP");
}
catch (e) {
try {
httprequest=new XMLHttpRequest();
}
catch (e) {
httprequest=null;
}
}
}
return httprequest;
}
function doAjax( msg, obj ) {
var obj=obj; //主要是這一行
alert( obj.value);
var he="he="+msg;
var ajaxrequest=initAjax();
ajaxrequest.open("POST", "abc.jsp", true);
ajaxrequest.setRequestHeader( "Content-Type", "application/x-www-form-urlencoded;charset=utf-8");
ajaxrequest.send(he);
ajaxrequest.onreadystatechange=function() {
if (ajaxrequest.readyState==4) {
if (ajaxrequest.status==200) {
document.getElementById("showpane").innerHTML=ajaxrequest.responseText;
}
else {
doAjax( msg );
}
}
}
setTimeout("doAjax(document.sform.txtara.value,document.all["+obj.sourceIndex+"])", 100);//還有這一行
}
就這樣,我解決了對象參數(shù)傳遞的問題,最后想說一句,能有更好的解決方法請作評論提出來,本人樂意與志同道合者學習!
您可能感興趣的文章:
- 深入理解setTimeout函數(shù)和setInterval函數(shù)
- setTimeout函數(shù)兼容各主流瀏覽器運行執(zhí)行效果實例
- 解決火狐瀏覽器下JS setTimeout函數(shù)不兼容失效不執(zhí)行的方法
- jQuery setTimeout()函數(shù)使用方法
- js函數(shù)setTimeout延遲執(zhí)行的簡單介紹
- JS中setInterval、setTimeout不能傳遞帶參數(shù)的函數(shù)的解決方案
- js函數(shù)使用技巧之 setTimeout(function(){},0)
- 定時器(setTimeout/setInterval)調(diào)用帶參函數(shù)失效解決方法
- 給c#添加SetTimeout和SetInterval函數(shù)
- setTimeout函數(shù)的神奇使用
相關(guān)文章
關(guān)于innerHTML后丟失動態(tài)綁定的EVENT問題解決方法
用innerHTML取出一段內(nèi)容后再innerHTML回去,那么原來動態(tài)綁定的事件就會丟失,下面與大家分享下解決方法,感興趣的朋友可以參考下哈2013-05-05javascript實現(xiàn)點擊按鈕彈出一個可關(guān)閉層窗口同時網(wǎng)頁背景變灰的方法
這篇文章主要介紹了javascript實現(xiàn)點擊按鈕彈出一個可關(guān)閉層窗口同時網(wǎng)頁背景變灰的方法,涉及javascript鼠標事件及頁面元素樣式操作的相關(guān)技巧,需要的朋友可以參考下2015-05-05JavaScript循環(huán)遍歷的24個方法,你都知道嗎
這篇文章主要給大家介紹了關(guān)于JavaScript循環(huán)遍歷的24個方法,文中對每種方法都給出了詳細的實例代碼,方便大家理解學習,對大家的學習或者工作具有一定的參考學習價值,需要的朋友可以參考下2021-09-09JavaScript數(shù)組排序reverse()和sort()方法詳解
這篇文章主要介紹了JavaScript數(shù)組排序reverse()和sort()方法詳解,需要的朋友可以參考下2017-12-12JavaScript中無法通過div.style.left獲取值的解決方法
這篇文章主要介紹了JavaScript中無法通過div.style.left獲取值的問題分析及解決方法,需要的朋友可以參考下2017-02-02