2016-05-12 9 views
3

私は、最後の行が終了した後に再び呼び出す関数を持っています。内部で関数を呼び出す方法

コードを表示した方がわかりやすいかもしれません。

function updateQuantity(){ 
    // further code where I change same data 
    // and now I want to start function again but with remembering the input element that called it previously 
    updateQuantity(this); // I tried it this way but it doesn't work 
} 

+0

それはどうしたらうまくいかないのですか?これは典型的な再帰のケースです(終了条件が必要な場合を除く)。もう一度呼び出すときに同じ「this」値を持つようにしていますか? –

+0

@MikeC OPは 'updateQuantity'の以前の実行で設定された変数を保存しようとしていますか? – andlrc

+0

私はこの関数で使用したい入力要素を覚えておきたいです – cyprian

答えて

2

コメントから、あなたの再帰的なメソッド呼び出しに値を渡したいと思うようです。

function updateQuantity(val){ 
    // Do something with `val` 
    val = val + 1; 

    console.log(val); 

    // And call it again with the value 
    if(val < 5){ 
    updateQuantity(val); 
    } 
} 

updateQuantity(1); // 2, 3, 4, 5 
+0

値はありませんが、以前はこの関数を呼び出す入力要素が必要でした。この入力要素を使用したいからです。 – cyprian

+0

元の議論値を意味していますか?それから、それをそのまま変更して渡さないでください。上記のコードから 'val = val + 1;'を削除してください。 – Uzbekjon

0

あなたは、関数本体でそのDOM要素を取得しようとしているように見えます。

これは簡単な例です。フィドルhttps://jsfiddle.net/c3kbu0j7/10/

リンク

HTML

<a href="#">element you want.</a> 

javasriptは

$('a').on('click',function(){ 
    a(this); 
}); 
var i=0; 
function a(tar){ 
    console.log(tar); 
    if(i<4){ 
    i++; 
    a(tar); 
    } 
    i=0; 
} 
2

答えは簡単です、updateQuantity関数内updateQuantity.call(this)を使用するのに十分である - 我々はcallを使用して追加するときthis、関数は再び開始し、前の入力要素を覚えていますこれはupdateQuantityと呼ばれています。

関連する問題