Модераторы: Sardar, Aliance
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Как правильно создать функцию? В "onclick" работает, отадельно нет. 
:(
    Опции темы
EasyTask
Дата 24.9.2010, 15:18 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 52
Регистрация: 26.7.2010

Репутация: нет
Всего: нет



Всем привет. Пожалуйста, помогите разобраться с кодом. Ситуация следующая:

Я нашел в интернете интересующий меня скрипт. Он выглядит следующим образом:

Код

<div class="spoil">
<div class="smallfont">Текст описания спойлера<input type="button" value="Развернуть" class="input-button" onclick="
if (this.parentNode.parentNode.getElementsByTagName('div')[1].getElementsByTagName('div')[0].style.display != '') 

this.parentNode.parentNode.getElementsByTagName('div')[1].getElementsByTagName('div')[0].style.display = ''; this.innerText = ''; this.value = 'Свернуть'; 

else 
{
this.parentNode.parentNode.getElementsByTagName('div')[1].getElementsByTagName('div')[0].style.display = 'none'; this.innerText = ''; this.value = 'Развернуть'; 
}
"/>
</div>
<div class="alt2">
<div style="display: none;">

текст внутри спойлера...

</div>
</div>
</div>



Все работает отлично. Но, возникла следующая проблема. Не очень хочется захламлять код такой громоздкой конструкцией, поэтому я решил обработку события "онклик" вынести в отдельный файл в виде функции. Однако у меня это не получилось :( Когда я делал по типу:

Функция Спойл
// Копипаст содержания обработчика

и вызывал ее при клике ничего не происходило. Я думаю это то из за строк: getElementsByTagName т.к функция не знает какой элемент ее вызывает. Попробовал так:

Код

function Spoil(aid){

if (this.parentNode.parentNode.getElementsById('aid')[1].getElementsById('aid')[0].style.display != '') 

this.parentNode.parentNode.getElementsById('aid')[1].getElementsById('aid')[0].style.display = ''; this.innerText = ''; this.value = 'Свернуть'; 

else 
{
this.parentNode.parentNode.getElementsById('aid')[1].getElementsById('aid')[0].style.display = 'none'; this.innerText = ''; this.value = 'Развернуть'; 
}

}


Тоже не получилось :( помогите разобраться, что не так. Вроде задача банальнейшая взять одну часть кода из файла и вставить в другую. Уже даже подумывал о реализации инклуда через пхп smile Заранее всем большое спасибо!
PM MAIL   Вверх
patap
Дата 24.9.2010, 15:26 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 893
Регистрация: 7.5.2005
Где: Украина, Зп

Репутация: 1
Всего: 40



Код

<script>
  function foo(node) {
    if (node.parentNode.parentNode.getElementsByTagName('div')[1].getElementsByTagName('div')[0].style.display != '') { 
      node.parentNode.parentNode.getElementsByTagName('div')[1].getElementsByTagName('div')[0].style.display = ''; node.innerText = ''; node.value = 'Свернуть'; 
    } else {
      node.parentNode.parentNode.getElementsByTagName('div')[1].getElementsByTagName('div')[0].style.display = 'none'; node.innerText = ''; node.value = 'Развернуть'; 
    }
  }
</script>

<div class="spoil">
<div class="smallfont">Текст описания спойлера<input type="button" value="Развернуть" class="input-button" onclick="foo(this)"/>
</div>
<div class="alt2">
<div style="display: none;">

текст внутри спойлера...

</div>
</div>
</div>



--------------------
На боку кобура болталась, сзади шашка отцовская звякала. 
Впереди меня все хохотало, а позади все плакало (с)
PM MAIL ICQ   Вверх
EasyTask
Дата 24.9.2010, 15:41 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 52
Регистрация: 26.7.2010

Репутация: нет
Всего: нет



Работает!!! Огромное спасибо!!!  smile 
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | JavaScript: для новичков | Следующая тема »


 




[ Время генерации скрипта: 0.0632 ]   [ Использовано запросов: 21 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.