於是,上網查找了一下,用了另一種寫法setTimeout("fun("+參數+")", 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);
但是一旦要傳遞其他什麼參數或者是對象參數,按照網上提供的方法就是要重寫這個函數了。
經過研究和實踐,我自己改進了方法,大家可以參考借鑒一下,我只是依據我的個人需要,其他情況我也不能保證,請多多指教!
復制代碼 代碼如下:
<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);//還有這一行
}
就這樣,我解決了對象參數傳遞的問題,最後想說一句,能有更好的解決方法請作評論提出來,本人樂意與志同道合者學習!