2016-05-12 2 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 в теле функции.

Это простой пример.

ссылка Fiddle 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.

Смежные вопросы