一、 setTimeout this指向問題 setTimeout("this.count()",1000)中的this指的是window對象.
js的setTimeout定義為
復制代碼 代碼如下:
window.setTimeout=function(vCode, iMilliSeconds [, sLanguage]){
//.....代碼
return timer//返回一個標記符
}
所以當向setTimeout()傳入this的時候,當然指的是它所屬的當前對象window了。
解決方法:
1、在調用setTimeout前先保存this,如self=this; setTimeout("self.count()", 1000);
2、使用jquery的$.proxy改變this指向,如$.proxy(setTimeout("this.count()"), this);
二、向setTimeout傳入參數 復制代碼 代碼如下:
function init(){
var url = "<%=basePath%>fetchwater.do?method=searchRealWater&xzqh=" + "<%=xzqh%>" + "&rand="+Math.random();
//alert(url);
window.setTimeout(function(){ searchJDWater(url);},100);
}
親測可以傳入任意參數,可以是string類型也可以是其他的類型,只是在傳入this時要注意用上面的解決方法。
附上一個更加詳細的向settimeout傳參方法鏈接http://www.jb51.net/article/40524.htm