js setTimeout 常見問題


一、 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://blog.csdn.net/yousuf007/article/details/6185224


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章