Вход

Просмотр полной версии : Скрыть объект с помощью javascript


tatiana-js
02.06.2012, 21:31
Здравствуйте.

Помогите, пожалуйста, с javascript.

Есть код:

<script type="text/javascript">
jQuery(document).ready(function() {
jQuery('.first-and-second-carousel').jcarousel();
jQuery('#third-carousel').jcarousel({
vertical: true
});
});
function imgs(img)
{
for(i=0;i<50;i++)
{
if (document.getElementById('imgs_'+i))
{
document.getElementById('imgs_'+i).style.display=' none';
}
}
document.getElementById('imgs_'+img).style.display ='block';
}
</script>

<div id='imgs_%i%'><p id='thumb'><a href='%Path%' rel='clearbox[Pic,,3,,stop]'><img src='%Preview%' border='0'></a></p></div>

Значения в %...% подставляются автоматически.
id='imgs_%i%' - имеют значения в итоге: id='imgs_0', id='imgs_1', id='imgs_2' и т.д.

Нужно для id='imgs_%i%' с помощью javascript'а указать, что если это не нулевой объект (id='imgs_0') - скрыть объект (аналог style='display: none;').

Заранее спасибо.

9xakep
02.06.2012, 21:51
Пишите в скрипте:

document.onload = function () {
var elem= document.getElementsByTagName('div')
for(i=0;i<elem.length;i++) {
if(elem[i].id!='imgs_0') {
document.getElementsByTagName('div')[i].style.display = 'none'
}
}
}

tatiana-js
02.06.2012, 22:18
Видимо я неправильно вставила Ваш код...
http://soconsult.cz/estate/test/test_90.html
Все равно выводятся все картинки.

Посмотрите, пожалуйста, куда нужно вставить?
Заранее спасибо.

9xakep
02.06.2012, 22:44
Вы вствили код до моего редактирования, переправьте(я там забыл скобку поставить)

tatiana-js
03.06.2012, 02:14
Я отредактировала, но что-то не так...
Не работает.

Ваш код нужно вставить внутрь моего скрипта или отдельно?

devote
03.06.2012, 02:33
Все ваше замените на это: <script type="text/javascript">
jQuery(document).ready(function() {

jQuery('.first-and-second-carousel').jcarousel();

jQuery('#third-carousel').jcarousel({
vertical: true
});

imgs( 0 );
});

function imgs( img ) {
jQuery('[id^="imgs_"]').hide();
jQuery('#imgs_' + img ).show();
}
</script>

devote
03.06.2012, 02:44
devote,
У нее нет запуска данной функции imgs(img)
внимательнее смотрите и увидите... она вписана в тегах в инлайн атрибутах.

devote
03.06.2012, 02:45
Deff,
к примеру вот:
<img onclick='imgs(this.id);' id='0' src='/images/cheh/estateimg/preview_larsen_3mes_4.jpg' width='70' alt='' />

devote
03.06.2012, 03:08
onclicк перехватывается после первозапуска - слайдером странный слайдер который вешает события через инлайновые методы.

devote
03.06.2012, 03:10
Deff, не знаю как у тебя, но у меня отладчик при каждом клике на мини-картинку ловит срабатывание функции imgs() а значит она все же нужна там.

Deff
03.06.2012, 03:17
devote, с меня +
http://hostjs-mybb2011.narod.ru/devote_test_90.htm


Просёк, там нижний сладер всем Управляет

tatiana-js
03.06.2012, 03:40
Огромнейшее всем спасибо, особенную благодарность хочу выразить Deff!

Deff
03.06.2012, 03:42
tatiana-js,
Пасибо, но у меня была непродуманная логика - Скрипт devote учёл все нюансы

tatiana-js
05.06.2012, 12:45
C кодом devote все работает, но есть одно НО...

При открытии страницы показываются все картинки, потом схлапываются в одну (imgs_0 остается, остальные не видны).
При использовании css:
<style type="text/css">
#main_content div[id^="imgs_"]{
display:none;
}
#main_content #imgs_0{
display:block;
}
</style>
картинки сразу скрыты...
По крайней мере я не вижу загрузки всех картинок.
А учитывая, что картинок будет до 50, через стили мне вариант подходит.

Deff
05.06.2012, 13:05
tatiana-js,
подозрение, что стоит поставить и css и скрипт,
сss не было соориентировано на нижний слайдер(я его вообще как то упустил из виду
css - оперативно скроет излишек изо в верхнем, а нижний слайдер, позволяет менять стартовую картинку слайдшоу в верхнем