0

値が取得されているかどうかを確認しようとしています。それが取得されている場合は、次の値にスキップしています。これは単純な再帰によって行われます

function recur(id){
    if($('#'+id).length != 0){ // checking if id exists on page
       recur(id++);
    }
    else{
        return id;
    }
}

$.(document).ready(function(){
     var x = recur(1);
     alert(x);
});

しかし、私はこのエラーが発生します:

x is undefined
 return proxy
4

1 に答える 1

2

再帰呼び出しの return ステートメントがありません:

function recur (id){
  if($('#'+id).length != 0){ 
      return recur(id++); // add return here
  }
  else{
      return id;
}

それがないと、終了ケースのみが値を返しますが、スタックに渡されません。したがって、最上位のrecur呼び出しは実際には を返しundefinedます。

私は個人的に再帰を使用しませんが、反復的に使用します。

function nextId(id) {
    while ($('#'+id).length != 0) {
        ++id;
    }
    return id;
}
于 2013-10-30T22:36:23.030 に答える