Застрял с созданием рабочего цикла javascript

#javascript #for-loop #foreach #for-of-loop

#javascript #for-loop #foreach #для-из-цикла

Вопрос:

Я борюсь со следующим:

У меня есть 7 столбцов с номерами от 0 до 6. Каждый столбец содержит несколько DIV. Я хочу найти последний div в каждом столбце. Я могу получить их с помощью:

 var lastDiv = col[col.length-1];
console.log(lastDiv); 
  

У меня есть следующее для каждого столбца, закодированное 7 раз (где cols [1] становится cols [2] и т. Д.):

 var col = cols[1]; //setting the second column
var lastDiv = col[col.length-1];
console.log(lastDiv);
  

Итак, для безопасного пространства для кодирования я подумал, что это также можно сделать с помощью цикла. Как новичок / начинающий программист, у меня не так много опыта работы с ними, поэтому я начал просто с цикла «for»:

 function myFunction(){
    var col = [ 0, 1, 2, 3, 4, 5, 6 ];
         for (var i = 0; i <= 6; i  ) {
            console.log(col[i]);
         }
}
  

Это дает мне все номера столбцов. Следующий шаг с использованием nrs для проверки каждого столбца на наличие lastDiv:

 function myFunction(){
    var col = [ 0, 1, 2, 3, 4, 5, 6 ];
         for (var i = 0; i <= 6; i  ) {
            var lastDiv = col[col.length-1];
            console.log(lastDiv);
         }
}
  

Похоже, это не работает, я не получаю каждый lastDiv для каждого столбца. Итак, я подумал, что, возможно, мне нужен «forEach» вместо этого? Итак, я попробовал:

 var col = [ 0, 1, 2, 3, 4, 5, 6 ];
    col.forEach(myFunction);

    function myFunction(){
        var lastDiv = col[col.length-1];
        console.log(lastDiv);
     }
  

Это тоже не сработало. Я также нашел несколько примеров «для», но они были для меня еще более сложными (хотя я читал, что их полезно использовать).

Очевидно, я делаю здесь что-то не так, но, похоже, я не могу понять это. Итак, я подумал о том, чтобы спросить здесь. Что я упускаю / делаю неправильно?

Спасибо

Комментарии:

1. Вы устанавливаете lastDiv последний элемент, в col котором вы объявили как массив чисел от 0 до 6, поэтому он всегда будет возвращать 6. вам нужно получить доступ к вашему массиву элементов div, а не col .

2. Думаете, вы можете опубликовать это как встраивание?

3. @pilchard Baiscly я хочу, чтобы он начинался с столбца 0 и запускал «var lastDiv = col [col.length-1];», А затем переходил к столбцу 1 и запускал его, а затем к столбцу 2 и т. Д. И т. Д. До 6. Я тоже начал неправильно в массиве??

Ответ №1:

Попробуйте этот метод

 $('col selector').each(function(e){
let lastdiv =$(this).children().last('div');
});
  

Комментарии:

1. op не указал, что они ищут решение jQuery, а скорее помогают с базовым циклом.

Ответ №2:

Понял (мне не нужно было использовать массив):

 function myFunction(){
        for (var i = 0; i <= 6;   i) {
            var col = cols[i];
            var lastDiv = col[col.length-1];
//some other stuff
}
  

Это сработало для меня!