2016-05-12 65 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.call(this)updateQuantity函数内部 - 当我们使用call并添加this,函数将重新开始并记住之前的输入元素叫做updateQuantity