Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 01.12.2016, 11:42
Кандидат Javascript-наук
Отправить личное сообщение для arkadii_parovozov Посмотреть профиль Найти все сообщения от arkadii_parovozov
 
Регистрация: 24.11.2016
Сообщений: 101

Не срабатывает последний цикл
Приветствую всех!

Не могу понять в чем дело. Перебираю массив следующим образом:
var all_id = arr_id[1].split(',');
	var i;
		for (i = 0; i < all_id.length; ++i) {
			document.getElementById(all_id[i]).classList.remove('select');
		};
	});

Цикл срабатывает нормально до предпоследней записи в массиве. Если я вывожу на экран значение "all_id.length" то оно соответствует длине массива, но последняя итерация не срабатывает. В чем причина?
Ответить с цитированием
  #2 (permalink)  
Старый 01.12.2016, 11:49
Профессор
Отправить личное сообщение для Dilettante_Pro Посмотреть профиль Найти все сообщения от Dilettante_Pro
 
Регистрация: 27.11.2015
Сообщений: 2,899

arkadii_parovozov,
++i
Ответить с цитированием
  #3 (permalink)  
Старый 01.12.2016, 12:04
Кандидат Javascript-наук
Отправить личное сообщение для arkadii_parovozov Посмотреть профиль Найти все сообщения от arkadii_parovozov
 
Регистрация: 24.11.2016
Сообщений: 101

Не понял на что Вы намекаете. Почему, тогда, такая запись перебирает все циклы как надо:
var all_id = arr_id[1].split(',');

	    var i;

	        for (i = 0; i < all_id.length; ++i) {

	            $('#'+all_id[i]).removeClass("select");

	        };
});
?
Ответить с цитированием
  #4 (permalink)  
Старый 01.12.2016, 13:05
Профессор
Отправить личное сообщение для Dilettante_Pro Посмотреть профиль Найти все сообщения от Dilettante_Pro
 
Регистрация: 27.11.2015
Сообщений: 2,899

arkadii_parovozov,
Не знаю, что у вас в массивах...
<style>
.select {position:relative;
            height:20px;
            width:20px;
            background-color:red
}
</style>
<div id='i1' class='select'></div>
<div id='i2' class='select'></div>
<div id='i3' class='select'></div>
<script>
var arr = document.querySelectorAll('.select'),
      arr_id = [],
      i;
for ( i = 0; i<arr.length;i++) {
     arr_id [i] = arr[i].getAttribute('id');
}
for ( i = 0; i<arr_id.length;++i) {
   document.getElementById(arr_id[i]).classList.remove('select');
}
</script>
Ответить с цитированием
  #5 (permalink)  
Старый 01.12.2016, 14:04
Кандидат Javascript-наук
Отправить личное сообщение для arkadii_parovozov Посмотреть профиль Найти все сообщения от arkadii_parovozov
 
Регистрация: 24.11.2016
Сообщений: 101

Я ничего не понимаю.... Если я прописываю явно переменную:
var data0 = "text1(liuboi)&Бабушкинская,Речной вокзал,Тушинская,Академическая,Алтуфьево";
то цикл срабатывает до конца, а если я этот-же текст вытаскиваю из ajax ответа:
var arr_id = data.split('&');
var all_id = arr_id[1].split(',');
то последний цикл не срабатывает.
Если я вывожу ответ от сервера "алертом" на экран и копирую данные с него и записываю в переменную, то цикл работает до конца. Не могу понять в чем дело.
Ответить с цитированием
  #6 (permalink)  
Старый 01.12.2016, 15:37
Профессор
Отправить личное сообщение для Dilettante_Pro Посмотреть профиль Найти все сообщения от Dilettante_Pro
 
Регистрация: 27.11.2015
Сообщений: 2,899

arkadii_parovozov,
Ну вы проверьте, что у вас в массивах
var data = "text1(liuboi)&Бабушкинская,Речной вокзал,Тушинская,Академическая,Алтуфьево";

var arr_id = data.split('&');
alert(JSON.stringify(arr_id));
var all_id = arr_id[1].split(',');
alert(JSON.stringify(all_id));

Здесь - из строки - все нормально. А из ответа?
Ответить с цитированием
  #7 (permalink)  
Старый 01.12.2016, 16:29
Кандидат Javascript-наук
Отправить личное сообщение для arkadii_parovozov Посмотреть профиль Найти все сообщения от arkadii_parovozov
 
Регистрация: 24.11.2016
Сообщений: 101

После первого сплита показывает:
"текст","Бабушкинская,Речной вокзал,Тушинская,Академическая,Алтуфьево,Пятницкое шоссе\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n"

После второго:
"Бабушкинская","Речной вокзал","Тушинская","Академическая","Алтуфьево","Пятницкое шоссе\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n"
Получается что последний id отличен от оригинала, но тогда другой вопрос, откуда он берет эти переносы? В файле обработчике вывод заканчивается так:
echo "&$st_ind";

Последний раз редактировалось arkadii_parovozov, 01.12.2016 в 16:37.
Ответить с цитированием
  #8 (permalink)  
Старый 01.12.2016, 16:36
Кандидат Javascript-наук
Отправить личное сообщение для arkadii_parovozov Посмотреть профиль Найти все сообщения от arkadii_parovozov
 
Регистрация: 24.11.2016
Сообщений: 101

Мммм-да.... Оказывается это приклеились переносы строк в файле обработчике. Поменял echo на exit(); и все работает нормально.

Вот так всегда, из-за какой-то мелочи можно весь мозг вынести.

Спасибо за помощь Dilettante_Pro!
Ответить с цитированием
Ответ



Опции темы Искать в теме
Искать в теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Цикл завершается не дожидаясь выполнения функции leonoff jQuery 2 13.08.2014 16:02
Как подчинить себе цикл wreder jQuery 16 20.11.2013 22:17
Цикл завешивает страницу, помогите Romingood jQuery 5 19.10.2013 14:30
как сделать чтобы цикл не запускался второй раз Brook Events/DOM/Window 5 12.05.2013 21:43
Бесконечный цикл Sundro Общие вопросы Javascript 8 08.08.2011 13:58