Просмотр темы
Страница 1 из 2: 12
|
аналог foreach в js или вопрос по $.each jquery
|
|
Zaxap |
Опубликовано 19.05.2014 07:04
|
Элита Сообщений: 1090 Зарегистрирован: 05.09.2012 10:32 |
Делаю так:
Хотелось бы сказать: "все хорошо", но вот "хорошо" как раз не получается. Изображения выводятся только одиночно, да и то в самом конце подгрузки... Думал, что это все из-за неправильно заданного цикла с $.each(), но в середине также присутствуют записи с одним изображением, которое появляться никак не хочет (хотя сам цикл, кажется, тоже немного не такой, поэтому картинки выводятся одиночно)... В середине же их нет: почему-то срабатывает else и image становится пустым... В чем может быть ошибка? Зло не дремлет, а я добрый...
|
|
|
Pisatel |
Опубликовано 19.05.2014 09:18
|
Ветеран Сообщений: 678 Зарегистрирован: 08.02.2013 05:51 |
Мб размер поставить в кавычки? <= "1280" И вот еще что. Наверное, <= так нельзя, так как условие будет срабатывать ВО ВСЕХ случаях. Лучше проверять просто =. |
|
|
Zaxap |
Опубликовано 19.05.2014 10:48
|
Элита Сообщений: 1090 Зарегистрирован: 05.09.2012 10:32 |
Pisatel, нет, как раз "меньше либо равно". Если размер картинки меньше или равен 75, то срабатывает условие, если не срабатывает, то ищем картинку побольше... Таким вот нехитрым образом я вытаскиваю самую большую существующую картинку. Если бы условие срабатывало во всех случаях... но почти во всех срабатывает else (т.е. image="";). Если бы оно не срабатывало нигде, то было бы намного проще, ведь функция тогда бы просто не работала... но нет, оно где-то почему-то работает... Но даже без этих условий (раз 5 проверял) просветление на функцию не находит, чудеса не творятся... Значит все дело в each. Изменил(а) Zaxap, 19.05.2014 15:34 Зло не дремлет, а я добрый...
|
|
|
Pisatel |
Опубликовано 19.05.2014 11:22
|
Ветеран Сообщений: 678 Зарегистрирован: 08.02.2013 05:51 |
Меньше или равно (<=) Возвращает true, если левый операнд меньше правого или равен ему. То есть, 5<=50 true, 10<=50 true, 25<=50 true... Надеюсь, ход мыслей понятен. У тебя все условия срабатывают и получается каша. |
|
|
Zaxap |
Опубликовано 19.05.2014 11:37
|
Элита Сообщений: 1090 Зарегистрирован: 05.09.2012 10:32 |
Pisatel, срабатывает else, при котором image равняется 0. Это же условие работает, как часы (там, где не срабатывает else). Проблема же в foreach, в том, что else срабатывает почти везде по непонятной причине. У меня нет 5<=75, у меня есть 75<=75, 502<=604 (но это больше 130, поэтому условие никак не срабатывает), 2100<=2560... и прочее... А каша - это у П.Дурова в API каша... по-дурацки все выводится, как не крути... --- давайте... сравним php и js-jq функции, что ли... делал все по аналогии... Сначала php, за ним js... То, в чем функции расходятся (относительно), я пометил таким вот комментарием для наглядности: /*!*/... Зло не дремлет, а я добрый...
|
|
|
Pisatel |
Опубликовано 19.05.2014 13:21
|
Ветеран Сообщений: 678 Зарегистрирован: 08.02.2013 05:51 |
Я не знаю, верна ли твоя функция, я лишь пытаюсь указать примерно на это
|
|
|
Zaxap |
Опубликовано 19.05.2014 13:38
|
Элита Сообщений: 1090 Зарегистрирован: 05.09.2012 10:32 |
Pisatel, заметьте, 10<=75 срабатывает => else - уже нет. Если бы все условия шли в обратном порядке - да. У меня вопрос по форычу ($.each()), не по моему условию. Все-таки тут проблема с тем, что срабатывает $.each((){if(){image="true";}else{image="";});. Изменил(а) Zaxap, 19.05.2014 13:48 Зло не дремлет, а я добрый...
|
|
|
Pisatel |
Опубликовано 19.05.2014 15:06
|
Ветеран Сообщений: 678 Зарегистрирован: 08.02.2013 05:51 |
Все равно позволю себе настоять, что правильным выражение будет такое
|
|
|
Rush |
Опубликовано 19.05.2014 15:18
|
Администратор Разработчики Группа поддержки Сообщений: 1418 Зарегистрирован: 31.08.2010 14:41 |
а разве вк апи возвращает ширину изображений? я помню только photo_75, photo_130 и т.д. вардамп хде? |
|
|
Zaxap |
Опубликовано 19.05.2014 15:32
|
Элита Сообщений: 1090 Зарегистрирован: 05.09.2012 10:32 |
Rush... Вопрос по $.each((){}) или еще чему-то, но не по "есть ли width в photo", ибо проблема не в этом... Почему-то практически везде срабатывает else и image становится равно ничему (image="";). П.С. Пишу это почти в каждом посте... как будто никто не читает первый пост, либо читает через строчки... Мне лучше знать, не вы ведь по сей день паритесь над vk api... тут ошибка с $.each условием в JavaScriipt-JQuery, а не с моей отсебятиной :( P.S. Вот:
Изменил(а) Zaxap, 19.05.2014 15:42 Зло не дремлет, а я добрый...
|
|
|
Rush |
Опубликовано 19.05.2014 15:58
|
Администратор Разработчики Группа поддержки Сообщений: 1418 Зарегистрирован: 31.08.2010 14:41 |
так как у тя может if сработать, если photo.width === undefined?
|
|
|
Zaxap |
Опубликовано 19.05.2014 16:25
|
Элита Сообщений: 1090 Зарегистрирован: 05.09.2012 10:32 |
Rush, не знаю, как еще объяснить, что условие с full_photo тут совершенно не причем, даже если оно неверно... (Через строчки читаете, ей-богу!)
Скажу так: тоже самое, что и с full_photo - ничего существенно не изменилось (кроме кликабельности)... Изображения отображаются только в конце, в середине их нет. Не только те записи, где картинок несколько, но и те, где картинка одна... (надеюсь, стало понятнее) --- Путем проб и ошибок я еще раз доказал: почему-то срабатывает else даже там, где картинки есть...
Изменил(а) Zaxap, 20.05.2014 04:57 Зло не дремлет, а я добрый...
|
|
|
Rush |
Опубликовано 20.05.2014 08:25
|
Администратор Разработчики Группа поддержки Сообщений: 1418 Зарегистрирован: 31.08.2010 14:41 |
undefined не надо в кавычки брать
|
|
|
Zaxap |
Опубликовано 20.05.2014 08:58
|
Элита Сообщений: 1090 Зарегистрирован: 05.09.2012 10:32 |
Rush, погуглил немного насчет этого: кавычки, как я понял, не нужны, если не используешь typeof, с typeof без них не работает... Сделал так: if(attachments.photo !== undefined){} Ничего не изменилось... --- Сменил условие на if('photo' in attachments){} ...и снова ничего не изменилось... --- Следовательно, что мне уже давно стало ясно, о чем я уже 2 раза (а то и 4) пишу: Что-то не так с foreach'ем.
Изменил(а) Zaxap, 20.05.2014 09:33 Зло не дремлет, а я добрый...
|
|
|
Rush |
Опубликовано 20.05.2014 10:05
|
Администратор Разработчики Группа поддержки Сообщений: 1418 Зарегистрирован: 31.08.2010 14:41 |
вывод |
|
|
Zaxap |
Опубликовано 20.05.2014 10:12
|
Элита Сообщений: 1090 Зарегистрирован: 05.09.2012 10:32 |
При таком раскладе везде "undefined undefined"...
--- 100 200 (x26) Вот так вот выглядит результат при
Причем на скрине firebug'а отчетливо видны те самые "невидимые картинки" (если быть точнее, ссылки на них), которые не выводятся в середине...
Zaxap присоединено следующее:файл:
Изменил(а) Zaxap, 20.05.2014 10:27 Зло не дремлет, а я добрый...
|
|
|
Rush |
Опубликовано 20.05.2014 10:37
|
Администратор Разработчики Группа поддержки Сообщений: 1418 Зарегистрирован: 31.08.2010 14:41 |
console.log что выводит?
|
|
|
Zaxap |
Опубликовано 20.05.2014 10:39
|
Элита Сообщений: 1090 Зарегистрирован: 05.09.2012 10:32 |
Смотря какой вариант. Все написал же... При таком раскладе везде "undefined undefined"... ...... 100 200 (x26) Вот так вот выглядит результат при ...... Зло не дремлет, а я добрый...
|
|
|
Razor |
Опубликовано 20.05.2014 10:45
|
Администратор Группа поддержки Сообщений: 508 Зарегистрирован: 20.08.2010 15:55 |
Потому что ты append делаешь ЗА циклом, вот он и возвращает undefined.. Попробуй внутри. |
|
|
Zaxap |
Опубликовано 20.05.2014 10:52
|
Элита Сообщений: 1090 Зарегистрирован: 05.09.2012 10:32 |
Razor, в этой теме обсуждалось ваше "попробуй внутри" :) Zaxap написал:
Кидает ошибку синтаксиса на if(typeof item.attachments !== "undefined"){, но вот что тут не так? Перепроверял раз 20... Pisatel написал: Задай значение раньше. Ошибку вызывает потому, что ты в строке пытаешься сделать проверки, в функции append. Типа такого можно
Если знаете как, то скажите, пожалуйста... Изменил(а) Zaxap, 20.05.2014 10:59 Зло не дремлет, а я добрый...
|
|
Поделиться этой темой | |
Социальные закладки: | |
URL: | |
BBcode: | |
HTML: |
Страница 1 из 2: 12
Перейти на форум: |