2016-05-15 7 views
0

У меня есть две ссылки:Разбиение массивов Javascript щелчком

<a href="#" id="theone" data-do="1" class="loopit">loop it</a> 
<a href="#" id="thetwo" data-do="2" class="loopit">loop it 2</a> 

затем по щелчку я огонь функцию, которая закругляется массив. он прекрасно работает, когда есть один цикл, но запутался, когда есть больше, в этом примере две .:

var jsonArray = ["one","two","three","four","five","six","seven","eight","nine","ten","eleven","twelve"]; 
var jsonArray2 = ["january","fabruar","march","april","may","june","july","august","september","october","november","december"]; 
var current_group = 0; 
var group_size= 5; 
var group_size2= 2; 
var theskip; 
function cycleArray(thearr,thesize) { 
var current_items = thearr.slice(current_group, current_group + thesize); 
var skip = current_group += thesize; 

console.log(current_items); 
console.log(skip); 

if(current_group > thearr.length) { 
    console.log("no more"); 
/* then we stop! no more items, so maybe disable button etc */ 
} 
} 

$(".loopit").on("click", function(e){ 
e.preventDefault(); 
var theclicked = $(this).attr("data-do"); 

//alert(theclicked); 
if (theclicked == "1") { 
    cycleArray(jsonArray,group_size); 
}else{ 
    cycleArray(jsonArray2,group_size2); 
} 

}); 

поэтому вопрос является пропуск части. он сохраняет последнее, что имеет решающее значение, НО, если я нажал первую ссылку, я получу первые 5, но затем, если я нажму вторую ссылку, я получаю из правого массива два результата (отлично) НО, очевидно, это начинается с пятый, а не начало.

как я могу это сделать?

наилучшими пожеланиями

ответ

0

Проблема заключается в том, что вы отслеживании current_group с одной и той же переменной для обоих массивов. Поэтому, когда вы нажимаете на первую кнопку с размером 5, current_group var устанавливается в 5, и поэтому следующий вызов циклаArray для arrayJson2 начинается с позиции 5.

В JavaScript вы можете обрабатывать массивы, подобные объектам, и назначать их свойствам m лучшим решением было бы отслеживать current_group следующим образом:

var jsonArray = ["one","two","three","four","five","six","seven","eight","nine","ten","eleven","twelve"]; 
var jsonArray2 = ["january","fabruar","march","april","may","june","july","august","september","october","november","december"]; 

// Here initialize them with zero 
jsonArray2.current_group = 0; 
jsonArray.current_group = 0; 

var current_group = 0; 
var group_size= 5; 
var group_size2= 2; 
var theskip; 
function cycleArray(thearr,thesize) { 
// now you can sefely access the property coresponding the correct array 
var current_items = thearr.slice(thearr.current_group, thearr.current_group + thesize); 
var skip = thearr.current_group += thesize; 

console.log(current_items); 
console.log(skip); 

if(thearr.current_group > thearr.length) { 
    console.log("no more"); 
/* then we stop! no more items, so maybe disable button etc */ 
} 
} 
+0

привет. теперь он начинается с нужного места, но при втором щелчке он не идет через массив и показывает пустой массив, хотя в массивах больше элементов. – Ron

+0

в ломтике, current_group не использовал thearr. – Ron