[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: Проблема с парсингом данных
qaz333
Сейчас обьясню чего я хотел добтся, есть страница сайта, в ней очень много розличных форм
мне надо выбрать нумерацию тех тегов input которые имеют имя user и password

вот код, но не пашет, почему?


<script language="JavaScript">
var us = getElementsByTagName("input");
for( var i =0; i <us.length; i++)
{
var ok = getElementsByTagName("input")[i].name;
if(ok == "user")
{var login = i;}
elseif(ok == "password")
{var pass = i;}
}

alert(login+pass);
</
script>




Спустя 24 минуты, 18 секунд (9.01.2012 - 00:08) Игорь_Vasinsky написал(а):
Цитата
us.length


может я торможу, но в us - ты получил объект, а не сосчитал кол-во инпутов.


и потом - сам скрипт должен находиться ниже самой цели.

а какие ошибки?? что firebug говорит???

Спустя 10 минут, 26 секунд (9.01.2012 - 00:18) qaz333 написал(а):
Цитата (Игорь_Vasinsky @ 8.01.2012 - 21:08)
Цитата
us.length


может я торможу, но в us - ты получил объект, а не сосчитал кол-во инпутов.


и потом - сам скрипт должен находиться ниже самой цели.

а какие ошибки?? что firebug говорит???

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

ошибок нет, просто алерт не появляется, firebug не пользуюсь, не знал про такое

Спустя 31 минута, 49 секунд (9.01.2012 - 00:50) Игорь_Vasinsky написал(а):
я..сам загнался.. массив есть. вот код. анализируй. считает кол-во инпутов с именем user и password

<script language="JavaScript">
var us = document.getElementsByTagName("input");

var u = 0;
var p = 0;

for( var i =0; i <us.length; i++)
{
var ok = us[i].name;

if(ok == "user")
{
u++;
}
else if(ok == "password")
{
p++;
}

}

alert('name=user:'+u+'\nname=password:'+p);
</
script>

Спустя 52 секунды (9.01.2012 - 00:51) Игорь_Vasinsky написал(а):
порядковый номер инпута в DOM читай в i в условии при совпадении имени

Спустя 23 минуты, 53 секунды (9.01.2012 - 01:15) Игорь_Vasinsky написал(а):
ну вообщем вот

<script language="JavaScript">
var us = document.getElementsByTagName("input");

var u = 0;
var p = 0;
var numbU = '';
var numbP = '';

for( var i =0; i <us.length; i++)
{
var ok = us[i].name;

if(ok == "user")
{
numbU+= ' '+parseInt(i+1);
u++;
}
else if(ok == "password")
{
numbP+= ' '+parseInt(i+1);
p++;
}

}


alert('name=user:'+u+' -'+numbU+'\nname=password:'+p+' -'+numbP);
</
script>


если нужны для дальнейшей работы с ними - то parseInt(i+1) - замени на i - т.к. в массиве считается с нуля.

Спустя 21 секунда (9.01.2012 - 01:15) redreem написал(а):
вообще говоря условие задачи надо уточнить.
1. раз инпуты в формах, значит надо сначала брать все формы, а уже в них искать инпуты. приведеные пример заберут только корневые инпуты.
2. в разных формах могут встретиться свои инпуты с юзер и пассворд?
3. если да, то что нужно? сформировать для каждой формы индексы инпутов или найты первую форму с такими инпутами их индексы?

Спустя 5 минут, 19 секунд (9.01.2012 - 01:20) Игорь_Vasinsky написал(а):
как я понял - на странице где дохера фформ - нужно получить порядковые номера инпутов с указзаными именами.

Спустя 10 минут, 50 секунд (9.01.2012 - 01:31) redreem написал(а):
ну незнаю, ТС виднее :)

вот вариант поиска первой формы и нужных инпутов:


var frm = document.getElementsByTagName('form');
var frmInd = false;
var inpInd = new Array();
inpInd['user'] = false;
inpInd['password'] = false;

for (var f = 0;f < frm.length;f++) {
var inp = frm[f].getElementsByTagName('input');
for (var d in inpInd) {
for (var i = 0;i < inp.length;i++) if (inp[i].name == d) {inpInd[d] = i;break;}
}

if ((inpInd['user'] !== false) && (inpInd['password'] !== false)) {frmInd = f;break;}
}


if (frmInd !== false) alert('Индекс инпута с user: '+inpInd['user']+' Индекс инпута с password: '+inpInd['password']+' в форме с индексом: '+frmInd); else alert('Пусто.');

Спустя 1 день, 10 часов, 11 минут, 17 секунд (10.01.2012 - 11:43) qaz333 написал(а):
Цитата (Игорь_Vasinsky @ 8.01.2012 - 22:15)
ну вообщем вот

<script language="JavaScript">
var us = document.getElementsByTagName("input");

var u = 0;
var p = 0;
var numbU = '';
var numbP = '';

for( var i =0; i <us.length; i++)
{
var ok = us[i].name;

if(ok == "user")
{
numbU+= ' '+parseInt(i+1);
u++;
}
else if(ok == "password")
{
numbP+= ' '+parseInt(i+1);
p++;
}

}


alert('name=user:'+u+' -'+numbU+'\nname=password:'+p+' -'+numbP);
</
script>


если нужны для дальнейшей работы с ними - то parseInt(i+1) - замени на i - т.к. в массиве считается с нуля.

о, етот код подошол, спасибо)

Спустя 46 секунд (10.01.2012 - 11:43) Игорь_Vasinsky написал(а):
вот и хорошо.
Быстрый ответ:

 Графические смайлики |  Показывать подпись
Здесь расположена полная версия этой страницы.
Invision Power Board © 2001-2024 Invision Power Services, Inc.