А как то их все скрыть можно? Ведь сколько пользователи добавят видео, столько и будет таблиц с одинаковым id на странице. И их все надо скрыть на определенных страницах.
|
Друзья, ну неужели никто не знает, как это сделать? Второй день маюсь. Нужно скрыть несколько одинаковых таблиц в зависимости от того, какой урл. По айди понятно что не получится скрыть, т.к. одинаковых таблиц несколько. По name тоже не работает ни в таблицах ни в слоях. Есть вариант со стилями наверное, но как это реализовать?
|
Получить коллекцию таблиц по классу и в цикле все их последовательно скрыть.
|
Octane,
мдя, еще бы знать, как это сделать. |
Ну что ж Вы поиском пользоваться не умеете? :)
Ну ладно напишу здесь сложный вариант :D Для новых браузеров достаточно выполнить «getElementsByClassName», напишем функцию, которая будет выполнять тоже самое в старых браузерах: function findClass(str, node) { var node = node || document, list = node.getElementsByTagName('*'), length = list.length, Class = str.split(/\s+/), classes = Class.length, array = [], i, j, key; for(i = 0; i < length; i++) { key = true; for(j = 0; j < classes; j++) if(list[i].className.search('\\b' + Class[j] + '\\b') == -1) key = false; if(key) array.push(list[i]); } return array; } Функция получает все дочерние элементы указанного узла «node» или всего документа «document» и затем в цикле ищет элементы у которых в атрибуте «className» встречаются все указанные вами классы. Теперь для новых браузеров добавим native-функцию «getElementsByClassName», чтобы быстрее работало, для этого в нашу функцию «findClass» добавим условие и одну строчку в начале: function findClass(str, node) { if(document.getElementsByClassName) return (node || document).getElementsByClassName(str); else { var node = node || document, list = node.getElementsByTagName('*'), length = list.length, Class = str.split(/\s+/), classes = Class.length, array = [], i, j, key; for(i = 0; i < length; i++) { key = true; for(j = 0; j < classes; j++) if(list[i].className.search('\\b' + Class[j] + '\\b') == -1) key = false; if(key) array.push(list[i]); } return array; } } Теперь рассмотрим как это можно использовать: window.onload = function() { // После того как готов DOM // В цикле пробегаем по всем найденным элементам и скрываем их var i, list = findClass('audio'), length = list.length; for(i = 0; i < length; i++) list[i].style.display = 'none'; }; В (X)HTML классы могут быть записаны как угодно: <table class="audio">…</table> <table class="audio table1">…</table> <table class="super audio">…</table> <table class="table2 audio disabled">…</table> во всех таблицах встречается CSS-класс «audio», и они будут скрыты. Вот :) не все так сложно, надо только немного постараться))) |
Octane,
два дня в гугле сижу, информация разрозненная, а как в кучу собрать ума не приложу. Вообще меня пугает джаваскрипт, стараюсь не пользоваться, но здесь никак без него. Спасибо огромное :) , сейчас буду разбираться, надеюсь заработает. |
а еще можно при добавлении видео дать таблице (если это php)
$id='video'.rand(1,999); а в js искать следующим образом var tbl = document.getElementsByTagName('table'); for(var i=0; i<tbl.length; i++) { if(tbl[i].id.indexOf('video') != -1) { tbl[i].style.display = 'none'; } } ну конечно это все будет в зависимости от урла страницы и все id тоже будут уникальными |
HelpeR, ваше решение бестолковое и неэффективное по ряду причин:
|
Octane, да я не думал об этом когда писал код, я лишь предложил один из вариантов решения. Но и вашем случае если ему надо скрыть только таблицы с классами class='audio' как он написал в первом посте, то лучше при добавлении таблицы присваивать ей класс audio а в js с помощью моего метода уже не искать, а сравнивать имя класса таблицы.
tbl[i].className == 'audio' т.к. если ему придется оформить вторую таблицу с описанием и он захочет дать название классу audioDescription то и эта таблица тоже скроется, чего и не требовалось. |
Цитата:
Цитата:
|
Часовой пояс GMT +3, время: 16:24. |