Forum Webscript.Ru
Программирование => JavaScript & JScript => Тема начата: Enemy от 11 Мая 2003, 13:53:51
-
Вот код:
//-----------------------------
if ( document.all[key].style.visibility == "visible" )
{
document.all[key].style.visibility="hidden";
document.all[key].style.position="absolute";
}
//-----------------------------
...............................
text |
text |
text |
...............................
Видно что в двух ячеек id начинается с "001".
Какой должен быть код js (сверху) чтобы все елементы с "001" были обработаны скриптом.
-
из id выреж первые три буквы
var str = ""+id,
if(str.substr(0,3) == \'001\')
{
далее твой код
}
вместо
document.all[key]
используй
document.getElementById(id);
и вообще что у тебя за код? В смысле для чего?
-
Nickii:
В смысле для чего?
У меня layers, которые надо показывать / прятать...
Nickii Ты не совсем понял мой вопрос. Дело в том что я буду вызывать функцию только один раз и подавать одно значение, напр. "001". И функция должна "перебрать" все ID на странице, и работать с теми которые начинаются на "001".
Я так представляю себе что может в js есть такое понятие как массив обьектов (в моем случае ID).?? и тогда просматривая каждый в цыкле проверять условие IF...??....
-
Enemy
В стандарте нет таких массивов, то ты можешь сам пробежаться по всем элементам страницы используя свойства объектов firstChild, nextSibling, или что-то в этом роде и проверяя id управлять невидимостью. Вот мой рабочий пример который для всех элементов встречающихся в тексте меняет цвет шрифта.
function textColored(what)
{ var el = parent.Win_Source.document.body.firstChild,
color = "black",
newcolor = "";
if(what == "Com") newcolor = "darkgreen";
if(what == "Teg") newcolor = "darkmagenta";
if(what == "Obj") newcolor = "darkmagenta";
if(what == "Str") newcolor = "darkblue";
if(what == "Sym") newcolor = "darkred";;
if(el)
while(el.nextSibling != null)
if(el.tagName == "PRE") break;
else el = el.nextSibling;
if(el && el.tagName == "PRE")
{ el = el.firstChild;
while(el.nextSibling != null)
{ if(el.tagName == "SPAN")
{
if(newcolor == "")
{ if(what == "No")
{ if(el.className == "Com" || el.className == "Teg" || el.className == "Obj" || el.className == "Str" || el.className == "Sym")
el.style.color = color; }
else
{ if(el.className == "Teg" || el.className == "Obj") color = "darkmagenta";
if(el.className == "Com") color = "darkgreen";
if(el.className == "Str") color = "darkblue";
if(el.className == "Sym") color = "darkred";
el.style.color = color; } }
else
if( what == el.className )
if(el.style.color==color) el.style.color = newcolor;
else el.style.color = color; }
el = el.nextSibling; } } }
Но это тоже не единственное решение.
Можно создать самому массив всех объектов и проверять только в нем то что тебе надо. Это будет гораздо быстрее.
а вообще зайди ко мне на сайт. Может найдешь некоторые готовые решения своих мыслей?
Nickii.