2016-11-29 40 views
-1
var ajaxFileUploader = function(formId){ 
    this.formId = formId; 

    console.log(this.formId); //myForm 
    return console.log(
     document.querySelector(this.formId)// null 
    ); 
} 

var foo = new ajaxFileUploader('#myFrom'); 

我嘗試創建一個對象和一個參數傳遞到它。傳遞paramenter爲對象,並用它來querySelector但返回null

它工作正常,當我CONSOLE.LOG這個屬性

,但是當我嘗試使用querySelector,它返回null

人知道爲什麼它返回null?

+0

提供最少的信息來調試您的問題。向我們顯示你的HTML和相關腳本 – ScanQR

+0

'return console.log(param)'給出'Illegal return statement'錯誤 –

+1

'return document.querySelector(this.formId)' –

回答

0

window.onload=function(){}內附上整個代碼。您可能已將腳本置於頭部,但元素位於body,這就是爲什麼元素加載較晚並且腳本返回null。如果使用window.onload=function(){}將運行該腳本後,整個文檔加載一次

window.onload=function(){ 
 
var ajaxFileUploader = function(formId){ 
 
    this.formId = formId; 
 

 
    console.log(this.formId); //myForm 
 
    return console.log(document.querySelector(this.formId)); 
 
} 
 

 
var foo = new ajaxFileUploader('#myFrom'); 
 
    }
<form id="myFrom" action="demo_form.asp" method="get"> 
 
    First name: <input type="text" name="fname"><br> 
 
    Last name: <input type="text" name="lname"><br> 
 
    <input type="submit" value="Submit"> 
 
</form>

+0

sry我只是注意到我有錯字,我輸入form從,花了我很多小時找出, XD –

+0

ha haa ...沒有問題;) – jafarbtech

+0

然後點擊問題中的「關閉」按鈕,這將防止用戶一次又一次地嘗試回答 – jafarbtech

0

有相對於背景迷路的「這個」

解決1個問題:

var ajaxFileUploader = function(formId){ 
    this.formId = formId; 
    console.log(this.formId); 
    var logger = console.log.bind(this); 
    return logger(
     document.querySelector(this.formId) 
    ); 
} 

var foo = new ajaxFileUploader('#myFrom'); 

解決方案2:

另一種解決方案是你可以使用「formId」,它將通過函數的詞法上下文得到。