Вопрос по правильному подключению файла (с Java-Script) к шаблону страницы

Вопрос по правильному подключению файла (с Java-Script) к шаблону страницы

#1 4 ноября 2012 в 11:13
Есть такой файлик «com_users_edit_profile.tpl». В нем есть строки:
  1.  
  2.  
  3. {add_js file='includes/jquery/tabs/jquery.ui.min.js'}
  4. {add_css file='includes/jquery/tabs/tabs.css'}
  5. {literal}
  6.  
Между 2-й и 3-й строк я вставляю строку, подключающую мой файл с java скриптом:
  1.  
  2.  
  3. {add_js file='includes/jquery/tabs/jquery.ui.min.js'}
  4. {add_css file='includes/jquery/tabs/tabs.css'}
  5. {add_js file='components/users/js/astro_ep.js'}
  6. {literal}
  7.  
В файле «astro_ep.js» содержится следующий код:
  1. var obj = document.getElementsByTagName('img');
  2. alert(obj.length);
Если я в браузере открываю на редактирование профиль текущего пользователя, то появляется сообщение:
Иллюстрация
Если перенести строку подключающую файл «astro_ep.js» в конец файла «com_users_edit_profile.tpl»:

  1. <div style="padding:5px; padding-bottom:15px; margin-bottom:20px;">
  2. <input style="font-size:16px" name="save2" type="submit" id="save2" value="{$LANG.CHANGE_PASSWORD}" />
  3. </div>
  4. </form>
  5. </div>
  6. {add_js file='components/users/js/astro_ep.js'}
И снова в браузере открыть профиль пользователя на редактирование. Снова выскакивает то же самое сообщение:
Иллюстрация
Вопрос: почему скрипт не может найти ни одной картинки, ведь одна картинка точно есть?:
Иллюстрация
#2 4 ноября 2012 в 11:47
по приведеному коду тег {literal} у тебя ни где не закрывается, либо приведи весь код tpl, либо жди онопланетян которые прочитают из головы твой код и разместят его здесь для помощи…
#3 4 ноября 2012 в 12:30
Потому что код {add_js file='components/users/js/astro_ep.js'} загружает ваш скрипт в заголовок страницы. В секцию <head>, когда dom еще и не думала формироваться…
#4 4 ноября 2012 в 12:47
Если это весь код /astro_ep.js то проще так, размести в самом конце com_users_edit_profile.tpl
  1. {literal}
  2. <script type="text/javascript">
  3. var obj = document.getElementsByTagName('img');
  4. alert(obj.length);
  5. </script>
  6. {/literal}
Потому что через системное подключение внешнего скрипта (add_js file*****) сначала отработает поиск элементов по document.getElementsByTagName, только потом элементы подгружаються на страницу.
При подключении
Как видиш на странице нет вообще элементов, тегов и пр. Потому и 0 элементов найдено
А так разместив код в литерал
Найдено 6 элементов!
#5 4 ноября 2012 в 22:52
а разве так не проще? и без разницы где ставить.😉

  1. $(document).ready(function() {
  2. var obj = document.getElementsByTagName('img');
  3. alert(obj.length);
  4. });
#6 4 ноября 2012 в 23:58
  1.  
  2. $(function() {
  3. var images = $('img');
  4. console.log('найдено: '+images.length+' изображений');
  5. });
  6.  
если уж jQuery использовать …)…
Вы не можете отвечать в этой теме.
Войдите или зарегистрируйтесь, чтобы писать на форуме.
Используя этот сайт, вы соглашаетесь с тем, что мы используем файлы cookie.