Javascript-форум (https://javascript.ru/forum/)
-   Общие вопросы Javascript (https://javascript.ru/forum/misc/)
-   -   выборка видимых элементов (https://javascript.ru/forum/misc/23656-vyborka-vidimykh-ehlementov.html)

ChikiSt 01.12.2011 09:24

выборка видимых элементов
 
Здравствуйте! Допустим есть такой код...
<a href="any.href"> link1</a>
<div style="display:none">
  <div>
    <a href="any.href"> link2</a>
  </div>
  <a href="any.href"> link3</a>
</div>
<a href="any.href"> link4</a>
<div>
  <a href="any.href"> link5</a>
</div>

Нужно, перебирая ссылки, выбирать те, которые не скрыты.
for (var i=0;i<document.getElementsByTagName("a").length;i+ +)
{
...
}
Подскажите как это лучше сделать

ksa 01.12.2011 09:29

Цитата:

Сообщение от ChikiSt
как это лучше сделать

Например анализировать

document.getElementById("elementID").style.display

ChikiSt 01.12.2011 09:59

Цитата:

Сообщение от ksa (Сообщение 140034)
Например анализировать

document.getElementById("elementID").style.display

так ведь у ссылок "style.display" не определен и если делать ...
for (var i=0;i<document.getElementsByTagName("a").length;i+ +)
{
if (document.getElementsByTagName("a")[i].style.display!="none") {
...
}
}
то будут выбраны все ссылки

ksa 01.12.2011 10:09

Цитата:

Сообщение от ChikiSt
так ведь у ссылок ...

Не совсем понятно причём тут ссылки... Если у тебя скрываются ДИВы... :)
Проходя по ссылкам, тебе нужно смотреть родительские ДИВы и у них проверять видны ли они или нет.

С жиКвери будет проще... Там даже есть такой псевдокласс "видимые элементы". ;)

ChikiSt 01.12.2011 10:17

Цитата:

Сообщение от ksa (Сообщение 140048)
Не совсем понятно причём тут ссылки... Если у тебя скрываются ДИВы... :)
Проходя по ссылкам, тебе нужно смотреть родительские ДИВы и у них проверять видны ли они или нет.

С жиКвери будет проще... Там даже есть такой псевдокласс "видимые элементы". ;)

так ведь если родитель скрыт, то он и все его потомки не будут видны на странице.
Я пишу пользовательский скрипт, который автоматически клацает по определенным ссылкам, но только по тем, которые видны

ksa 01.12.2011 10:19

Цитата:

Сообщение от ChikiSt
так ведь если родитель скрыт, то он и все его потомки не будут видны на странице.

Разумеется. :yes:
Только этот факт никак не противоречит тому, что я написал тебе выше... ;)

ChikiSt 01.12.2011 10:29

Цитата:

Сообщение от ksa (Сообщение 140048)
Проходя по ссылкам, тебе нужно смотреть родительские ДИВы и у них проверять видны ли они или нет.

ты имеешь ввиду сделать так...
for (var i=0;i<document.getElementsByTagName("a").length;i+ +)
 {
  var link=document.getElementsByTagName("a")[i]
    if (link.style.display!="none" && link.parentNode.style.display!="none" ) {
    ...
 }
 }

<a href="any.href"> ссылка1</a> 
<div style="display:none"> 
  <div> 
    <a href="any.href"> ссылка2</a> 
  </div> 
  <a href="any.href"> ссылка3</a> 
</div> 
<a href="any.href"> ссылка4</a> 
<div> 
  <a href="any.href"> ссылка5</a> 
</div>

а 2-ая ссылка определится как видимая ?

ksa 01.12.2011 11:19

Цитата:

Сообщение от ChikiSt
ты имеешь ввиду сделать так...

Я имею ввиду, что помимо самих ссылок, нужно проверять все (!) родительские элементы на видимость. ;)

Так же намекаю, что с жиКвери это написать ооочень просто... :)

ChikiSt 01.12.2011 11:26

ksa, спасибо большое, думаю дальше я разберусь что к чему :)


Часовой пояс GMT +3, время: 13:56.