Методы и свойства

 
0
 
JavaScript
ava
FelikZ | 21.07.2007, 14:51
Как узнать кол-во, их свойства и методы, объектов полученых с помощью document.getElementsByTagName()
Comments (13)
ava
lexxICON | 21.07.2007, 14:16 #
Всё одно - for..in.

function show_props(obj, objName) {
var result = "";
for (var i in obj) {
result += objName + "." + i + " = " + obj[i] + "\n";
}
return result;
}

http://developer.mozilla.org/en/docs/Core_...ements:for...in

Хотя дебаггером будет сподручнее Tools
ava
ksnk | 21.07.2007, 14:20 #
Это типа, прикол?

var x = document.getElementsByTagName('a')
getElementsByTagName возвращает массив, число элементов которого можно узнать с помощью свойства length x.length
Каждый элемент массива - какой-то объект, у которого опять-же можно узнать свойства, пробежашись по ним циклом for (var i in x) {alert([i,x[ i ]])} у методов typeof (x[i]).toLowerCase()=='function' // toLowerCase, возможно, лишняя перестраховка...
ava
Alik_Kirillovich | 21.07.2007, 14:32 #
Метод document.getElementsByTagName возвращает массив объектов с элементами.

Количество этих элементов можно узнать с помощью свойства массива length:

//arElements - массив параграфов (тег <P>) на странице
var arElements = document.getElementsByTagName ("p");
//intElementsCount - их количество
var intElementsCount = arElements.length;
//Выводим их количество
alert ("На странице "+ arElements.length +" параграфов");


Свойства и методы элемента можно получить с помощью цикла for (property in object) {}:

//arElements - массив параграфов (тег <P>) на странице
var arElements = document.getElementsByTagName ("p");
//objElement1 - первый параграф
var objElement1 = arElements [0];

//Проходим все его свойства
for (txtPropertyName in objElement1)
{
//txtPropertyValue - значение текущего свойства
var txtPropertyValue = objElement1 [txtPropertyName];
//Выводим имя и значение текущего свойства
document.write ("objElement1."+ txtPropertyName +" = "+ txtPropertyValue +"<br>");
}
ava
Zeroglif | 21.07.2007, 15:19 #
Цитата (ksnk @ 21.7.2007, 14:20 findReferencedText)
getElementsByTagName возвращает массив

Цитата (Alik_Kirillovich @ 21.7.2007, 14:32 findReferencedText)
document.getElementsByTagName возвращает массив


Не массив. smile
ava
Alik_Kirillovich | 21.07.2007, 18:21 #
Цитата


Не массив.



Да, действительно, похоже не массив... Но количество элементов все равно можно узнать с помощью свойства length как в примере.
ava
FelikZ | 21.07.2007, 19:24 #
lexxICON, ухты smile про in ваще не знал!

ksnk, спс!

Кстате на последок, таки способом норм искать чото на странице? ну допусти текст ссылки?
ava
ksnk | 22.07.2007, 13:38 #
Цитата (Zeroglif @ 21.7.2007, 15:19 findReferencedText)
Не массив.

Угу, но выглядит как массив, ведет себя как массив... smile
ava
Alik_Kirillovich | 22.07.2007, 16:37 #
Цитата


Угу, но выглядит как массив, ведет себя как массив...



Выглядит может быть и как массив, но ведет себя совсем НЕ КАК МАССИВ!

У него нет ни одного метода массива, вроде sort, join, splice, pop и т.д.

Это объект со свойствами:
  • 0, 1, ..., n - элементы этого "массива"
  • length - число элементов
Больше никаких свойств и методов у него нет!
ava
Zeroglif | 22.07.2007, 16:46 #
Цитата (Alik_Kirillovich @ 22.7.2007, 16:37 findReferencedText)
Больше никаких свойств и методов у него нет!

Есть, только движок их показывать не обязан, захочет - покажет item, namedItem...
ava
Alik_Kirillovich | 22.07.2007, 22:05 #
Цитата (Zeroglif @ 22.7.2007, 17:46)
Цитата (Alik_Kirillovich @  22.7.2007, 16:37 \\"findReferencedText\\")
Больше никаких свойств и методов у него нет!


Есть, только движок их показывать не обязан, захочет - покажет item, namedItem...


Ну, во всяком случае, это явно не свойства массива... Так что еще раз повторяю: выглядит может быть и как массив, но ведет себя совсем не как массив!
ava
lexxICON | 23.07.2007, 10:55 #
Короче говоря это NodeList smile
ava
lexxICON | 23.07.2007, 11:33 #
FelikZ,
Цитата
Кстате на последок, таки способом норм искать чото на странице? ну допусти текст ссылки?

Можно и через перебор

var a = document.body.getElementsByTagName("a"), l = a.length, i = -1;
while (i<l) {
if (a[i+=1].firstChild.nodeValue == "something") {
alert(a[i].firstChild.nodeValue);
}
}

ava
check | 23.07.2007, 11:36 #
Цитата (Alik_Kirillovich @ 22.7.2007, 16:37 findReferencedText)
Выглядит может быть и как массив, но ведет себя совсем НЕ КАК МАССИВ!
Потому что это коллекция.
Please register or login to write.
Firm of day
Вы также можете добавить свою фирму в каталог IT-фирм, и публиковать статьи, новости, вакансии и другую информацию от имени фирмы.
Подробнее
Contributors
advanced
Submit