Форум: Форум PHPФорум ApacheФорум Регулярные ВыраженияФорум MySQLHTML+CSS+JavaScriptФорум FlashРазное
Новые темы: 0000000
C++. Мастер-класс в задачах и примерах. Авторы: Кузнецов М.В., Симдянов И.В. PHP 5/6. В подлиннике. Авторы: Кузнецов М.В., Симдянов И.В. MySQL на примерах. Авторы: Кузнецов М.В., Симдянов И.В. Программирование. Ступени успешной карьеры. Авторы: Кузнецов М.В., Симдянов И.В. Социальная инженерия и социальные хакеры. Авторы: Кузнецов М.В., Симдянов И.В.
ВСЕ НАШИ КНИГИ
Консультационный центр SoftTime

HTML+CSS+JavaScript

Выбрать другой форум

 

Здравствуйте, Посетитель!

вид форума:
Линейный форум Структурный форум

тема: Не назначаются стили для объекта div
 
 автор: oli   (03.10.2010 в 00:28)   письмо автору
 
 

Написал функцию, которая должна назначить объектам div с id=1..10 css стили
Для этого снимаю от уже отображенных объектов на странице их относительное положение слева и справа(ниже):
control.setAttribute("onmouseover", "rzY=document.getElementById('"+icon+"').offsetTop; rzX=document.getElementById('"+icon+"').offsetLeft; rzX=rzX-27; rzY=rzY-73;
document.getElementById('overl"+overl+"').style.top=rzY;
document.getElementById('overl"+overl+"').style.left=rzX;
document.getElementById('overl"+overl+"').className = 'showNotOficcial';"); 


На странице формируются объекты div к которым посредством js надо приписать стили
$last.="<div class='overwindow' style=\"position:absolute;\" id='overl".$row['id']."'>".$row['title']." ".$row['adress']."</div>";


Стили такие:
.overwindow {visibility: hidden; width:250px; height:100px; background-color:#7F7F7F;} 
.showNotOficcial {visibility: visible; width:250px; height:100px; background-color:#7F7F7F; position:absolute}

---------------------------------------------------------------------------------------
Код работает, отображает div объекты, только не там где нужно т-е не срабатывает
....style.top=rzY....  и  ...style.left=rzX....

В чем может быть подвох?
При этом делал трассировку алертом значения rzY rzX - выводит

  Ответить  
 
 автор: АЯ   (03.10.2010 в 00:38)   письмо автору
 
   для: oli   (03.10.2010 в 00:28)
 

...style.top=rzY + 'px';
...style.left=rzX + 'px'; 

Вы про это один раз уже спрашивали.
И один раз я Вам уже отвечал - http://www.softtime.ru/forum/read.php?id_forum=4&id_theme=75753&page=1
Понимаю... с первого раза до Вас не дошло. Бывает...

Но, интересно, сколько раз ещё этот вопрос задавать будете?
Сиречь - с какого раза понимание к Вам придёт? :-))

  Ответить  
 
 автор: OLi   (03.10.2010 в 01:12)   письмо автору
 
   для: АЯ   (03.10.2010 в 00:38)
 

Прошу прощения, как говорится пока шишку не набью! Набил уже...Гарантирую )
Тогда еще один вопрос:
На странице есть объекты с id div1 div2 div45 div67 и тд , которых может быть сколько угодно...Необходимо по наведению на ссылку эти объекты скрыть. Как такое сделать?

  Ответить  
 
 автор: АЯ   (03.10.2010 в 02:12)   письмо автору
 
   для: OLi   (03.10.2010 в 01:12)
 

По наведению мыши на ссылку - onmouseover - надо запустить цикл, который переберёт ВСЮ коллекцию этих объектов - document.getElementsByTagName ('DIV') - проверит id каждого объекта на соответствие шаблону - div+цифра/ы - и установит свойство стиля visibility такового объекта равным hidden. В общем, одна строка кода из трёх операторов: цикл, условный, присваивание.

Соответственно, при отводе мыши - onmouseout - повторяются эти три оператора, только устанавливается иное значение - visibility.

  Ответить  
 
 автор: OLi   (03.10.2010 в 12:49)   письмо автору
 
   для: АЯ   (03.10.2010 в 02:12)
 

Да, но проблема в том, что таких элементов может быть очень много и с индексами div 388
div855 очень разными(в разнобой), т-е если делать цикл, то не знаем конечное число, до которого прокручивать
В самом простейшем случае так:
function clearlink(){

for (var i = 1; i < 300; i++) 
 {
   if (document.getElementsByTagName('div"+i+"')!==null)
  {
  
  }else { document.getElementById('div"+i+"').style.visibility='hidden';}
 }


            }

Но почему то не срабатывает?

  Ответить  
 
 автор: АЯ   (03.10.2010 в 15:52)   письмо автору
 
   для: OLi   (03.10.2010 в 12:49)
 

Ужасно плохо у Вас с понималкой :-(

"Прокручивать" в цикле надо коллекцию document.getElementsByTagName ('DIV') - это абсолютно ВСЕ теги <DIV> в документе, с любыми id и без оных. Браузер САМ, без Вашего участия, найдёт все эти теги и включит их в эту коллекцию, сколько бы их не было.

В общем, как и было обещано, всего 3 (ТРИ) оператора:
for (var w = document.getElementsByTagName ('DIV'), j = 0, l = w.length; j < l; j++) with (w [j])
if (id.length > 3 && id.indexOf ('div') == 0 && id.substr (3) == id.substr (3) * 1)
style.visibility = 'hidden'; 

  Ответить  
 
 автор: OLi   (04.10.2010 в 00:32)   письмо автору
 
   для: АЯ   (03.10.2010 в 15:52)
 

Мой код имеет право на жизнь, потому как выполняет свою задачу, а вот ваш пока не работает

  Ответить  
 
 автор: OLi   (04.10.2010 в 00:33)   письмо автору
 
   для: OLi   (04.10.2010 в 00:32)
 

function clearlink(){ 

for (var i = 1; i < 300; i++)  

 if (document.getElementById('div'+i)) 
{ document.getElementById('div'+i).style.visibility='hidden';
 
}else { } 

  Ответить  
 
 автор: АЯ   (04.10.2010 в 01:55)   письмо автору
 
   для: OLi   (04.10.2010 в 00:32)
 

Работает, работает... у некоторых просто руки "не имеют права на жизнь" :-)
<script>
function mF (x)
{
for (var w = document.getElementsByTagName ('DIV'), j = 0, l = w.length; j < l; j++) with (w [j])
if (id.length > 3 && id.indexOf ('div') == 0 && id.substr (3) == id.substr (3) * 1)
style.visibility = (x)? 'visible' : 'hidden';
}
</script>

<span onmouseover="mF (0)" onmouseout="mF (1)">Наведи</span>
<hr>
<div id="div234">Скроется - 1</div>
<div>Останется - 2</div>
<div id="div567">Скроется - 3</div>
<div id="div1">Скроется - 4</div>
<div id="abc345">Останется - 5</div>
<div id="div98765">Скроется - 6</div>

  Ответить  
 
 автор: OLi   (04.10.2010 в 16:55)   письмо автору
 
   для: АЯ   (04.10.2010 в 01:55)
 

Вы немного поспешили с выводом у меня эти объекты div формируются динамически, а не статически при загрузки страницы! Может в этом дело?

<a id="div33" href="#" onmouseover="edit()" onclick="clear()"><img src="/dle/templates/kartac/icon/15.gif"></a>

  Ответить  
Rambler's Top100
вверх

Rambler's Top100 Яндекс.Метрика Яндекс цитирования