[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: Js в foreach
юрьич
Здравствуйте. Не подскажите как правильно сделать следующее. Есть file.tpl в Smarty шаблоне. В нём в цикле я пытаюсь сделать такое
{foreach key=aid item=article from=$articles}
<div class="block">{$article.title}</div>
var img = 'url({$article.image})'
$('.block').css('background-image',img).css('background-size','cover')
</script>
{/foreach}

но значение в var img не совпадает со значением в foreach.Т.е. цикл должен выводить три блока с тремя титлами статей к которым привязаны картинки по id (и это работает), которые скрипт должен сделать фоном.Но {$article.image} в var img попадает не по id, а как попало. Т.е. нет синхронизации.
kaww
юрьич, скорее не как попало а последняя, потому что ты в каждой итерации всем бокам .block делаешь фон img, которую, кстати, объявляешь тоже при каждой итерации. Непонятно зачем вообще здесь нужен js. Можно и без него.
{foreach key=aid item=article from=$articles}
<div class="block" style="background-image: url({$article.image}); background-size:cover;">{$article.title}</div>
{/foreach}
юрьич
Блин, большое спасибо, действительно, что то я запарился с этим js, по другой теме уже дня два возился и по ходу не могу остановиться.
sergeiss
юрьич, во-первых, у тебя в начальном коде нет открывающего тэга <script>. Во-вторых,как это работает? Сначала создается вся страница. По ходу дела запускается встроенный JS. Но никто тебе не даст гарантии, что код будет запущен сразу же, как только будут созданы элементы ДИВ. А ты постоянно перезаписываешь содержимое переменной img. Поэтому получается так, скорее всего, что у тебя уже сколько-то элементов ДИВ созданы (или даже все), после чего запускается JS, сразу для всех уже созданных ДИВов.....
Короче говоря, чтобы не вдаваться во все подробности smile.gif, так скажу: для каждого блока надо иметь уникальную переменную img. Ну, типа img1, img2.... Используй что-то уникальное, что у тебя есть. Тогда всё сработает так, как ты ожидаешь.
Да, в данном случае kaww всё правильно сказал. Но в другой раз тебе может понадобиться нечто, подобное тому, что ты пытался сделать.

_____________
* Хэлп по PHP
* Описалово по JavaScript
* Хэлп и СУБД для PostgreSQL

* Обучаю PHP, JS, вёрстке. Интерактивно и качественно. За разумные деньги.

* "накапливаю умение телепатии" (С) и "гуглю за ваш счет" (С)

user posted image
Быстрый ответ:

 Графические смайлики |  Показывать подпись
Здесь расположена полная версия этой страницы.
Invision Power Board © 2001-2025 Invision Power Services, Inc.