函数中的javascript增量索引

时间:2010-05-03 18:56:28

标签: javascript jquery indexing

我只是想弄清楚如何在函数中创建一个索引,这样我就可以跟踪它生成的项目,我不知道怎么做这个似乎我应该知道这个..

addLocation(options,location)

   funciton addLocation(options,location){
       $('#list').append('<li class="location"><div>'+location.label+'</div>'+
        '<input type="hidden" name="location['+x+'][lat]" value="'+location.lat+'" />'+
        '<input type="hidden" name="location['+x+'][lon]" value="'+location.lon+'" />'+
        '<input type="hidden" name="location['+x+'][loc]" value="'+location.loc+'" />'+
        '<input type="hidden" name="location['+x+'][label]" value="'+location.label+'" />'+
    '</li>');
   }

现在通常你有一个forloop来帮助你跟踪事情但是在这个实例中我没有在循环中附加项目而且我一直收到一个错误,说明未定义的x

感谢您提供的任何帮助

感谢 麦克

3 个答案:

答案 0 :(得分:3)

因为你想要的是每次调用函数时,x都应该递增,你可以将x存储在一个闭包中,例如:

var addLocation = (function (){
  var x = 0; // store x
  return function (options,location) {
    x++; // increment x
    $('#list').append('<li class="location"><div>'+location.label+'</div>'+
    '<input type="hidden" name="location['+x+'][lat]" value="'+location.lat+'" />'+
    '<input type="hidden" name="location['+x+'][lon]" value="'+location.lon+'" />'+
    '<input type="hidden" name="location['+x+'][loc]" value="'+location.loc+'" />'+
    '<input type="hidden" name="location['+x+'][label]" value="'+location.label+'" />'+
    '</li>');
  };
})();

答案 1 :(得分:0)

声明x,因为在上面的代码中它没有被定义。

var x = 0;

答案 2 :(得分:0)

var x = $("#list>li").length + 1;