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

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> плавное открытие и закрытие div'а 
:(
    Опции темы
Mpak
Дата 30.6.2008, 16:27 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



Прошу прощения, если этот вопрос уже поднимался. Я ничего не смог найти...
Хочу что бы на клик по ссылке разворачивался плавно див, с набором ссылок. При повторном нажатии на
эту же ссылку сворачивался.
Гляньте, что не так? Я еще не до конца понимаю jscript...
Код

<script language="JavaScript">
var dh  = 1;
var ah  = 0;
var Spd = 10;
var mv = 'up';
function movediv() {
ah = document.all['matmenu'].style.height;
if (mv == 'up' && document.all['matmenu'].style.height < 500)
  { ah += dh;
    setTimeout ("movediv()",Spd);
  }
if (mv == 'up' && document.all['matmenu'].style.height == 500)
 { mv = 'down'; }

if (mv == 'down' && document.all['matmenu'].style.height != 0)
  { ah -= dh;
    setTimeout ("movediv()",Spd);
  }
if (mv == 'down' && document.all['matmenu'].style.height == 0)
 { mv = 'up'; }                            

 document.all['matmenu'].style.height = ah;
}
</script>



--------------------
В любой откомпилированной программе есть, по крайней мере, одна ошибка...
P.S. А у меня их минимум две...
PM MAIL ICQ   Вверх
Mpak
Дата 30.6.2008, 17:45 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



посидел, почитал книжнки, додумался как закрывать/открывать
Код

<script language="JavaScript"> 
var dh  = 1; 
var ah  = 3; 
var Spd = 1; 
var mv = "up"; 
function movediv() { 

if (mv == "up" && ah < 100) 
  { ah += dh;  } 
else 
  { mv = "down"; clearTimeout(0);  } 

if (mv == "down" && ah > 0) 
  { ah -= dh;  } 
else 
  { mv = "up"; clearTimeout(0);  } 
 document.all['matmenu'].style.height = ah; 
 setTimeout("movediv()", Spd); 
} 
</script>


теперь надобно разделить как нибудь smile
А то он у меня добесконечности открывает и тут же закрывает, а потом опять открывает)


--------------------
В любой откомпилированной программе есть, по крайней мере, одна ошибка...
P.S. А у меня их минимум две...
PM MAIL ICQ   Вверх
pegorov
Дата 30.6.2008, 23:00 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



Буквально на днях искал готовое решение. 
http://www.dynamicdrive.com/dynamicindex17...tedcollapse.htm
PM MAIL   Вверх
cardinal
Дата 1.7.2008, 13:27 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Инженер
****


Профиль
Группа: Экс. модератор
Сообщений: 6003
Регистрация: 26.3.2002
Где: Германия

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



pegorov, спасибо, тоже искал как раз...


--------------------
Немецкая оппозиция потребовала упростить натурализацию иммигрантов
В моем блоге: Разные истории из жизни в Германии

"Познание бесконечности требует бесконечного времени, а потому работай не работай - все едино".  А. и Б. Стругацкие
PM   Вверх
Mpak
Дата 2.7.2008, 17:28 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



Там, как и везде, ссылка на файл скрипта... мне бы разобратьсяsmile
Я вот до чего дошел:
Код

<script language="JavaScript">
var dh  = 1;
var ah  = 0;
var Spd = 1;
function moveupdiv() {

if (ah < 100)
  { ah += dh;  }
else
  { clearTimeout(0);
    document.all['llink'].href = "javascript:movedowndiv();";
    document.all['llink'].onclick="javascript:movedowndiv(); return false;";
  }
 document.all['matmenu'].style.height = ah;
 setTimeout("moveupdiv()", Spd);
}

function movedowndiv() {
if (ah > 0)
  { ah -= dh;  }
else
  { clearTimeout(0);
    document.all['llink'].href = "javascript:moveupdiv();";
    document.all['llink'].onclick="javascript:moveupdiv(); return false;";
  }
 document.all['matmenu'].style.height = ah;
 setTimeout("movedowndiv()", Spd);
}
</script>


id div'a - matmenu (прим. Мое)

Я ссылке, по которой кликают (id ее llink) переназначаю функцию на онклик.
Все работает не плохо, но не всегда срабатывает.... иногда приходится 2-3 раза кликнуть по ссылке...
Как от этого избавиться?


--------------------
В любой откомпилированной программе есть, по крайней мере, одна ошибка...
P.S. А у меня их минимум две...
PM MAIL ICQ   Вверх
krundetz
Дата 4.7.2008, 08:34 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Вечный странник
***


Профиль
Группа: Завсегдатай
Сообщений: 1400
Регистрация: 14.6.2007
Где: НН(Сормово)

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



Возможно лучше не переназначать функцию обработчик а ввести некий флаг который будет указывать на состояние дива открыт он или нет, а уже в функции обработчике можно проверять какое у него состояние и в зависимости от этого выбирать действие, после которого значение флага меняем на противоположное. Флагом может быть что угодно и глобальная переменная и атрибут этого дива. Как вариант назначаем ему при открытие класс open а при закрытие close.


--------------------
!цензоры - Хранитель стратегической жидкости
Группа ТГВ
Группа Нижний Новгород
user posted image
PM MAIL   Вверх
cardinal
Дата 4.7.2008, 11:33 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Инженер
****


Профиль
Группа: Экс. модератор
Сообщений: 6003
Регистрация: 26.3.2002
Где: Германия

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



Чем лучше?


--------------------
Немецкая оппозиция потребовала упростить натурализацию иммигрантов
В моем блоге: Разные истории из жизни в Германии

"Познание бесконечности требует бесконечного времени, а потому работай не работай - все едино".  А. и Б. Стругацкие
PM   Вверх
krundetz
Дата 4.7.2008, 11:50 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Вечный странник
***


Профиль
Группа: Завсегдатай
Сообщений: 1400
Регистрация: 14.6.2007
Где: НН(Сормово)

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



Цитата(cardinal @ 4.7.2008,  11:33)
Чем лучше?

Срабатывать будет всегда. Я тоже сталкивался с такой проблемой причем только в IE и решил её так.


--------------------
!цензоры - Хранитель стратегической жидкости
Группа ТГВ
Группа Нижний Новгород
user posted image
PM MAIL   Вверх
Vaulter
Дата 4.7.2008, 18:13 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


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

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



jquery + $(".collapsible").hide("slow");
$(".collapsible").show("slow");
$(".collapsible").toggle("slow");


smile


--------------------
PM MAIL WWW ICQ   Вверх
krundetz
Дата 4.7.2008, 21:08 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Вечный странник
***


Профиль
Группа: Завсегдатай
Сообщений: 1400
Регистрация: 14.6.2007
Где: НН(Сормово)

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



Vaulter человек же писал что хочет разобраться сам без применения сторонних библиотек


--------------------
!цензоры - Хранитель стратегической жидкости
Группа ТГВ
Группа Нижний Новгород
user posted image
PM MAIL   Вверх
Ghirik
Дата 5.7.2008, 00:05 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



Mpak, Вы очень плохо делаете, что учитесь программировать на JavaScript по старёханьким справочникам. Не следует привыкать к синтаксису, который поддерживает только IE.

document.all работает только в IE, сейчас общепринято брать элемент по "id". "id" и name - это разные вещи. По "id" элемент берут, например, так:
Код

var object = document.getElementById('id_элемента');


А если хочется использовать массивы, автоматически создаваемые любым браузером, то лучше их брать через:
Код

var object = document.getElementsByTagName('div');


В этом случае object станет массивом содержащим все тэги "div".

Вообще... Если вам это не только для получения эффекта, а для обучения, то посмотрите ссылки, которые я приводил здесь

А по теме, мы уже решали этот вопрос прямо на винграде. посмотрите... но я тогда плохо владел синтаксисом.

Добавлено через 3 минуты и 43 секунды
Добавлю.
Человек находится на коне, когда в совершенстве владеет библиотекой. Но когда он владеет языком, на котором написано это чудо - он сидит на трёх китах.


--------------------
Отдадим всё клиенту, пускай его машина мучается...

PM MAIL   Вверх
Mpak
Дата 7.7.2008, 16:58 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



дело в том, что когда я писал
Код

document.getElementById("id")

IE пишет, что это null или не является объектом....


--------------------
В любой откомпилированной программе есть, по крайней мере, одна ошибка...
P.S. А у меня их минимум две...
PM MAIL ICQ   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Форум для вопросов, которые имеются в справочниках, но их поиск вызвал затруднения, или для разработчика требуется совет или просьба отыскать ошибку. Напоминаем: 1) чётко формулируйте вопрос, 2) приведите пример того, что уже сделано, 3) укажите явно, нужен работающий пример или подсказка о том, где найти информацию.
 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | JavaScript: Общие вопросы | Следующая тема »


 




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


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

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