Добро пожаловать на сайт <БагБД>, где вы можете задавать вопросы о программировании и разработке на Битрикс и Битрикс24, и получать быстрые и квалифицированные ответы от профессионалов!

Javascript в шаблоне сайта на битриксе

00 голосов
10
Вопрос такой
Я абсолютный новичек в javascript-e, но мне понадобилось его использовать для создания раскрывающихся заголовков. То есть изначально информация под заголовком свернута, при клике разворачивается без перезагрузки страницы.

Вот код, который я нашел в интернете для раскрывающихся списков и слегка модифицировал.

Код
<SCRIPT LANGUAGE="JavaScript" TYPE="text/javascript">
<!--
function doMenu(AObjIndex) { 
  var subObj = document.all['chapter' + AObjIndex];
  if ( subObj.style.display == 'none' ) {
    subObj.style.display = 'block';
  }
  else {
    subObj.style.display = 'none';    
  }  // if..else  
}  // doMenu
//-->
</SCRIPT>

<A HREF="javascript:doMenu(1);">Раскрывающийся заголовок</A>
<div id="chapter1" style="display: none">
<img src="http://img121.imageshack.us/img121/9991/marklampefacebymarklamp.jpg"></div>


Если вставить его просто в html-файлик - все работает как надо.

При вставке в нужное место сайта - в один из элементов обычного инфоблока, работать перестает, по клику ничего не открывается. Пробовал вставлять скрипт просто в шаблон страницы - не решило проблему.

Наверное, ответ очень очевиден, но я в силу отсутствия опыта его не нашел(

Заранее спасибо!
спросил 25 Янв, 13 от RAKSE (240 баллов)

10 Ответы

00 голосов
Цитата
Кирилл Капоте пишет:
Пробовал вставлять скрипт просто в шаблон страницы

Куда именно? В какой файл и в какую его часть?
ответил 25 Янв, 13 от FireLuna (580 баллов)
00 голосов
Цитата
Павел пишет:
Цитата
Кирилл Капоте пишет:

Пробовал вставлять скрипт просто в шаблон страницы


Куда именно? В какой файл и в какую его часть?


в шаблон страницы(он один), пытался поставить перед тегом закрывающим тегом body и сразу после открывающего тега <body>
оба варианта не сработали

пытался просто засунуть в элемент инфоблока весь этот код

тоже не сработало
ответил 12 Фев, 13 от RAKSE (240 баллов)
00 голосов
а между тегам <head>?
ответил 21 Март, 13 от FireLuna (580 баллов)
00 голосов
Цитата
Павел пишет:
а между тегам <head>?


не помогло
ответил 19 Июль, 13 от RAKSE (240 баллов)
00 голосов
все еще актуальный для меня вопрос :oops:
ответил 23 Окт, 13 от RAKSE (240 баллов)
00 голосов
Нужно посмотреть выдаваемую ошибку.

Как вариант, попробуйте заменить четвертую строчку на
var subObj = document.getElementById('chapter' + AObjIndex);
ответил 26 Янв, 14 от smileplz (8,020 баллов)
00 голосов
Цитата
Кирилл Капоте пишет:
все еще актуальный для меня вопрос

Давайте адрес своей страницы поможем, так гадать можно долго
ответил 15 Май, 14 от FireLuna (580 баллов)
00 голосов
И ещё - Firefox+Firebug вам поможет, включите консоль и вам укажут, где происходит ошибка.
ответил 12 Сен, 14 от Yago (360 баллов)
00 голосов
А еще можно вставить через каждую строчку скрипта alert(1), alert(2), ...
И посмотреть на какой строчке рубится скрипт.
ответил 17 Янв, 15 от Eddie (2,060 баллов)
00 голосов
И вообще лучше знать яваскрипт в теории, а не на примерах.
Я бы например как-нибудь так сделал:
Код
<html>
   <head>
      <script>
         function hclick(element) {
            divs=element.getElementsByTagName('div');
            for(var i=0;i<divs.length;i++) {
               if (divs[i].className=='spoiler') divs[i].className='spoiler hidden'; 
               else if (divs[i].className=='spoiler hidden') divs[i].className='spoiler';
            }
         }
      </script>
      <style>
         .link {
            background-color: green;
            margin: 10px;
            color: white;
            padding: 4px;
         }
         .spoiler {
            border: 2px green double;
            background-color: yellow;
            color: green;
            padding: 5px;
         }
         .hidden {
            display: none;
         }
      </style>
   </head>
   <body>
      <div class="link" onclick="hclick(this)">
         + Раскрой меня
         <div class="spoiler hidden">
            <p>Это офигенный текст</p>
            <p>который раскрывается</p>
         </div>
      </div>
      <div class="link" onclick="hclick(this)">
         + Раскрой меня
         <div class="spoiler hidden">
            <p>Это офигенный текст</p>
            <p>который раскрывается</p>
         </div>
      </div>
   </body>
</html>
Второй иф нужен чтобы не присваивать класс другим дивам в раскрывалке.
ответил 03 Май, 15 от Eddie (2,060 баллов)

Похожие вопросы

0 голосов
6 ответов
0 голосов
2 ответов
0 голосов
4 ответов
0 голосов
6 ответов
спросил 21 Окт, 13 от Keis (160 баллов)