2016-11-29 7 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'); 

私はオブジェクトを作成し、それにパラメータを渡そうとします。オブジェクトにパラメータを渡して、それをquerySelectorに使用しますが、nullを返します。

私は、このプロパティに

をCONSOLE.LOGが、私はquerySelectorを使用しようとすると、それはnullを返しなぜ

誰もが知っているnullを返したときに、それが正常に動作しますか?

+0

は、問題をデバッグするための最小限の情報を提供します。 – ScanQR

+0

'return console.log(param)'は '不正なreturn文'エラーを返します –

+1

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

答えて

0

window.onload=function(){}のコード全体を囲みます。スクリプトを頭に置いたかもしれませんが、要素はbodyにあり、要素が遅く読み込まれ、scriptが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

私はちょうど私がタイプミスを気づいて、 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:

もう1つの解決策は、関数の字句的コンテキストによって取得される "formId"を使用することです。

関連する問題