Вопрос по внедрению js на страницу

Аватар пользователя u10root u10root 10 мая 2012 в 15:20

Есть простой код:

function downnon()
{
var a = document.getElementById('descripper');
if ( a.style.display == 'none' )
a.style.display = 'block'
else
if ( a.style.display == 'block' )
a.style.display = 'none';
};
(Для открытия закрытия блоков текста).

Локально код работает (при соответствующем html).
Никакими методами заставить его работать на друпал не могу.
Пытался подключить следующими методами:
drupal_add_js('code', 'inline') через вьювс/заголовок -- сыплется миллион ошибок(синтаксис). Не соображу куда запихнуть drupal_add_js(с модулями) - попробовал бы и это
Прописал в .info темы 'scripts[] = script.js' и оформил в виде script.js -- он подключается (в хроме в ресурсах виден, ну и визуально в ) но не работает
Вписывал его как html - тегами -через вьювсы/заголовки - нет не работает да и пишется не по месту, а в тело страницы.

Думаю это простой вопрос для сообщества, а у меня просто не хватает знаний..

HTML код вставляю на страницу через шаблоны прописав в поле Описание: -- вставляется прекрасно...
блабла
через вьювсы - перезапись с добавлением текста

Комментарии

Аватар пользователя u10root u10root 10 мая 2012 в 15:44

Пытался сразу написать но форум "съел" код. Я вынес строки '<h5><a class = "button" onclick = "downnon()">Описание:</a></h5><div id = descripper>' в файл views-view-field--body.tpl.php

Я правильно понял вопрос??

Аватар пользователя u10root u10root 10 мая 2012 в 15:48

Страница формируется вьювсами, а к нужному блоку текста(который хочу скрывать/обнажать) цепляется descripper -- внутри него <div id = descripper> блаблабла текст </div>

Аватар пользователя t1mm1 t1mm1 10 мая 2012 в 16:22

проблема у вас в том, что ваш джаваскрипт не видит всю DOM содержимого.
покажите весь код джаваскрипта плиз.
то есть файла. или сделайте атач. проще говоря- вас надо что бы джаваскрипт прогрузился после прогрузки dom модели вашего html

Аватар пользователя Alexmelin Alexmelin 10 мая 2012 в 16:51

а так не пробовали - <script type="text/javascript" src="/media/js/jquery-1.4.2.min.js"></script> ?
а если в ноде, то просто <script></script>

Аватар пользователя t1mm1 t1mm1 10 мая 2012 в 16:57

1.4.2 - и вылезут другие косяки ))) особенно если не сделать ноу конфликт версий. но все равно полезут косяки (на фронте).
для этой цели 1.3.2 более чем достаточно/

дайте полный код джаваскрипушного файла.

Аватар пользователя u10root u10root 10 ноября 2015 в 11:48

Это был полный код:

function downnon()
{
var a = document.getElementById('descripper');
if ( a.style.display == 'none' )
a.style.display = 'block'
else
if ( a.style.display == 'block' )
a.style.display = 'none';
};

Насколько я понимаю JQuery не используется

Оба файла я положил в гарланд. Шаблон пересканил во вьювсах, скрипт прописал в инфо гарланда. В конечной странице все формируется как надо(то есть код в нужные места доставляется), но.. не работает. Полностью согласен что что-то типа js не видит содержимого, но я не знаю как друпал строит страницы чтобы понять отчего так....

В ноду я пихал через вьювс/заголовки облачая и в php-теги и просто в формате html c тегами script

Аватар пользователя Alexmelin Alexmelin 10 мая 2012 в 17:14

Я вобще-то 1.4.2.min.js привел в качестве примера, вместо него можно влепить любой файл. А если нужен код, то jquery

Аватар пользователя u10root u10root 10 мая 2012 в 17:15

Кстати экспериментировал с drupal_add_js('alert("Hello!")', 'inline'); работает на ура... . Я делаю вот так:

drupal_add_js('function downnon()
{
var a = document.getElementById('
descripper');
if ( a.style.display == '
none' )
a.style.display = '
block'
else
if ( a.style.display == '
block' )
a.style.display = '
none';
};'
, 'inline');

И получаю ошибки

Аватар пользователя u10root u10root 10 мая 2012 в 17:21

Как я понимаю ошибки синтаксиса "Parse error: syntax error, unexpected T_STRING in /var/www/u2631278/public_html/blabla.com/includes/common.inc(1728) : eval()'d code on line 4"

Аватар пользователя t1mm1 t1mm1 10 мая 2012 в 17:21

ну верно.

можно просто поместить код в
$(document).ready(function(){
...

});

что за ошибки?

Аватар пользователя u10root u10root 10 мая 2012 в 17:27
$(document).ready(function(){
...
});

а это где?(понимаю что звучит идиотично) В смысле в моем скрипте код поместить в эту конструкцию?? Наврядли..
Судя по всему: Документ - Готов(полное дом дерево) и тогда уже - вперед..

А вместо function поставить мою downnon. так?

Аватар пользователя u10root u10root 10 мая 2012 в 18:33

Работает:

$(document).ready(function ()
{
  $(".socialbutton").click(function(){
        $("#descripper").animate({ opacity: "hide"}, "slow");
        });
 });

Как проявить уже разберусь сам - дело техники.
Огромное спасибо всем).

Аватар пользователя t1mm1 t1mm1 10 мая 2012 в 19:02

ахаха.
тоггле - да, это кстати решение ))
чето забыли про метод этот.

про документ реди - да, вы правильно думаете.