Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #11 (permalink)  
Старый 19.09.2012, 23:34
Профессор
Отправить личное сообщение для sotik Посмотреть профиль Найти все сообщения от sotik
 
Регистрация: 14.09.2012
Сообщений: 158

Приветствую.
Есть вот такая функция:
function change_visibility (block_4_close, block_4_open) {
document.getElementById(block_4_close).style.displ ay='none';
document.getElementById(block_4_open).style.displa y='';
}
И есть вот такие дивы:
<div id="r0" style="display:none">
<span onclick="change_visibility ('r0')">0 канал</span>
</div>
<div id="r1">
<span onclick="change_visibility ('r1')">1 канал</span>
</div>
<div id="r2">
<span onclick="change_visibility ('r2')">2 канал</span>
</div>
<div id="r3">
<span onclick="change_visibility ('r3')">3 канал</span>
</div>

Как правильно прописать цикл в функции,чтобы он перебирал эти дивы.
Нужно,чтоб по клику на одном он естественно скрывался, а тот который в это время скрыт - появлялся.
Ответить с цитированием
  #12 (permalink)  
Старый 20.09.2012, 01:57
Профессор
Отправить личное сообщение для sotik Посмотреть профиль Найти все сообщения от sotik
 
Регистрация: 14.09.2012
Сообщений: 158

Вобщем отчасти я решил задачку, но еще надо обточить чуток...
Спешу поделиться (уже подправил и обтачивать нечего.. если только break добавить...:
function change_visibility (Nak)
{
var divs = new Array();
var i = 0;
while(document.getElementById('r' + i))
{
divs[i] = document.getElementById('r' + i);
if(divs[i].style.display=='none')
{
divs[i].style.display='';
alert(i);
}
i++;
}
document.getElementById(Nak).style.display='none';
}

Тут можно и без массива обойтись,но оставил пока так.

Последний раз редактировалось sotik, 20.09.2012 в 02:13.
Ответить с цитированием
  #13 (permalink)  
Старый 20.09.2012, 02:15
что-то знаю
Отправить личное сообщение для devote Посмотреть профиль Найти все сообщения от devote
 
Регистрация: 24.05.2009
Сообщений: 5,176

Сообщение от lord2kim
реализация getElementsByClassName() для IE
и как обычно не правильная, но для данного случая подойдет
__________________
хм Russians say завтра but завтра doesn't mean "tomorrow" it just means "not today."
HTML5 history API рассширение для браузеров не поддерживающих pushState, replaceState
QSA CSS3 Selector Engine
Ответить с цитированием
  #14 (permalink)  
Старый 20.09.2012, 09:49
Аватар для lord2kim
Профессор
Отправить личное сообщение для lord2kim Посмотреть профиль Найти все сообщения от lord2kim
 
Регистрация: 03.05.2011
Сообщений: 848

devote, мб...у меня везде работает...
Ответить с цитированием
  #15 (permalink)  
Старый 24.09.2012, 02:07
Аспирант
Отправить личное сообщение для noid Посмотреть профиль Найти все сообщения от noid
 
Регистрация: 16.09.2012
Сообщений: 38

Вот я крот слепой, сижу жду ответов пару дней, как вдруг на тебе - заметил вторую страницу... позор мне.

Спасибо за ответы мужики, сейчас буду разбираться
Ответить с цитированием
  #16 (permalink)  
Старый 24.09.2012, 03:46
Аспирант
Отправить личное сообщение для noid Посмотреть профиль Найти все сообщения от noid
 
Регистрация: 16.09.2012
Сообщений: 38

И все-таки самый простой и рабочий вариант (я по-крайней мере его хоть понимаю) вот - http://memkey.net/blockheight/d.html
Только прошу вас самый простой скрипт смены стиля блока в зависимости от его высоты. При чем без всяких идентификаторов, просто, чтобы все блоки id="lom" меньше 200px становились display = "none"; Я пробовал вариант от lord2kimа адаптировать:
<script type="text/javascript">
function func() {
if (document.getElementById('lom').offsetHeight >= 200) {
    document.getElementsByClassName("item").style.display = "none";
}
else {
    document.getElementsByClassName("item").style.display = "block";  
}
}
 
window.onload = func();
</script>

но ничего не получается. Знаний мне не хватает. Как та собака, понимаю, что жрать хочу, а как написать хз.

p.s. Не критично, но если можно, скажите как правильно тут написать онклик, чтобы кнопка по нажатию пропадала:
<script type="text/javascript">
$(document).ready(function(){
	$('.item .holder').each(function(){
		var holder = $(this);
		var parent = $(this).parent('.item');
		if(holder.height() > parent.height()) {
			parent.after($('<button id="butts">Открыть</button>').on('click',function(){
				parent.height(holder.height());
				return false;
			}));
		}
	});
});
</script>
Ответить с цитированием
  #17 (permalink)  
Старый 25.09.2012, 15:23
Аспирант
Отправить личное сообщение для noid Посмотреть профиль Найти все сообщения от noid
 
Регистрация: 16.09.2012
Сообщений: 38

С высотой решил при помощи jquery - http://memkey.net/blockheight/d.html совсем убрал высоту из css и указал скриптом:
$(document).ready(function()
{
 $("div.item").each(function(){
   if($(this).height() > 200){
     $(this).css({height: '200px'}); // или  $(this).css({height: '100%'});
   }
 });
});

Так даже лучше - если скрипты не работают то блок полностью загружается.

Только теперь осталось кнопку убрать при нажатии... Помогайте пжлст.
Ответить с цитированием
  #18 (permalink)  
Старый 26.09.2012, 00:00
Аспирант
Отправить личное сообщение для noid Посмотреть профиль Найти все сообщения от noid
 
Регистрация: 16.09.2012
Сообщений: 38

РЕШЕНИЕ НАЙДЕНО
Всем спасибо, все решилось вот так:
$(window).load(function()
{
 $("div.item").each(function(){
   if($(this).height() > 200){
     $(this).css({height: '200px'});
   }
 });
}); 

$(window).load(function(){
    $('.item .holder').each(function(){
        var holder = $(this);
        var parent = $(this).parent('.item');
        if(holder.height() > parent.height()) {
            parent.after($('<center><button class="butts">Открыть</button></center>').click(function(){
                parent.height(holder.height());
                $(this).hide();
                return false;
            }));
        }
    });
});
Ответить с цитированием
Ответ



Опции темы Искать в теме
Искать в теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Как закрыть DIV слой? SergioGraf (X)HTML/CSS 2 13.03.2012 16:38
Как менять div на div d4a1 Общие вопросы Javascript 6 09.12.2011 17:04
Как вызвать функцию из другого файла Mukhtar AJAX и COMET 4 07.10.2011 22:01
Как "вытащить" div из table linbis Элементы интерфейса 4 27.03.2009 17:57
Как сравнить класс, если их много!? Sc@M Events/DOM/Window 16 29.08.2008 12:47