Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > JavaScript: Общие вопросы > поиск элемента


Автор: magavnuk 11.7.2009, 14:54
я новичок в яваскирпт!!!!

нужно найти textbox на page !!!
очень сложный page есть много таблиц !!!
page невозможно изменить(шарпоинт+купление контролы которые пишут свои html)(но ёто неважно вконце концов все html)

у меня нету id элементна поэтому функция должна быть рекурсивной!!!
есть название класса или можно наити все textbox на page !!!!
пройдя по всему документы и найти  не важно сколько вложених уровней!!!
может кто писал что либо подобное!!!
зарание спасибо лубому ответу!!!


написал вот это но это не находит то что мне надо !!
как понимаю это поиск на первом уровне!!
надо что бы рыло глубже!!!


function findInput()
  {
  var inputs = document.getElementsByTagName('input');
  var newInputs = new Array;
  for (i = 0; i < inputs.length; i++)
    {
    if (inputs[i].type == 'text') { newInputs[] = inputs[i]; }
    }
  if (newInputs.length > 0) { return newInputs; }
  return false;
  }

Автор: IDVsbruck 11.7.2009, 16:43
Такого элемента как textbox на html-страницах не существует.

Автор: magavnuk 11.7.2009, 16:56
ну я имел в виду <input type=text>

Автор: bars80080 11.7.2009, 18:03
НЕФИГ ТАК ОРАТЬ!!!


в одном документе (а если на странице нет фрэймов, то он один) все инпуты можно найти пробегом одного цикла:

Код

var inp = document.getElementsByTagName('input');
var inc = inp.length;
for(var i = 0; i < inc; i++) {
    if(inp[i].type != 'text') continue;
    // здесь мы делаем всё что-угодно с элементом input type="text"
}

всё. никакого рекурсива не нужно



осталось добавить, что массив объявляется как объект со скобками: var arr = new Array();
и пользуемся кнопкой "код"

Автор: magavnuk 12.7.2009, 09:24
спасибо большое  проверю!!!!

Добавлено через 4 минуты и 23 секунды
а если есть фрейми!! что надо делать?

Автор: bars80080 12.7.2009, 09:31
искать фреймы document.frames, а затем каждый обыскивать document.getElementsByTagName('input')

Автор: magavnuk 12.7.2009, 09:52
спасибо большое!!!
а если на листе есть сложные таблицы?
ето дело не меняет?

Автор: magavnuk 12.7.2009, 10:13

а если есть 
Код
<div></div>

 ы  ?

Автор: magavnuk 12.7.2009, 13:02
я заметил что когда я делаю дебаг 
то самой странице нет всех элементов!!
мне надо как то поймать момент после таго как все загрузилось!!


Автор: mxt 12.7.2009, 13:12
почитай о DOM document ready 

Автор: bars80080 12.7.2009, 14:39
дополнительный поиск надо осуществлять только в других фреймах. в одном фрейме все input-элементы находятся в пределах одного документа, поэтому достаточно одного прогона

событие по загрузке документа:
Код

<body onload="qw();">


либо, если не хочется портить тэг
Код

window.onload = function() { qw(); };

Автор: magavnuk 13.7.2009, 08:55
спасибо задача решена!!!!!!

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)