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


Автор: FelikZ 21.7.2007, 13:51
Как узнать кол-во, их свойства и методы, объектов полученых с помощью document.getElementsByTagName()

Автор: lexxICON 21.7.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_JavaScript_1.5_Reference:Statements:for...in

Хотя дебаггером будет сподручнее http://developer.mozilla.org/en/docs/JavaScript

Автор: ksnk 21.7.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, возможно, лишняя перестраховка...

Автор: Alik_Kirillovich 21.7.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>");
  }

Автор: Zeroglif 21.7.2007, 15:19
Цитата(ksnk @  21.7.2007,  14:20 Найти цитируемый пост)
getElementsByTagName возвращает массив

Цитата(Alik_Kirillovich @  21.7.2007,  14:32 Найти цитируемый пост)
document.getElementsByTagName возвращает массив


Не массив.  smile 

Автор: Alik_Kirillovich 21.7.2007, 18:21
Цитата

Не массив.


Да, действительно, похоже не массив... Но количество элементов все равно можно узнать с помощью свойства length как в примере.

Автор: FelikZ 21.7.2007, 19:24
lexxICON, ухты smile про in ваще не знал!

ksnk, спс!

Кстате на последок, таки способом норм искать чото на странице? ну допусти текст ссылки?

Автор: ksnk 22.7.2007, 13:38
Цитата(Zeroglif @  21.7.2007,  15:19 Найти цитируемый пост)
Не массив.   

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

Автор: Alik_Kirillovich 22.7.2007, 16:37
Цитата

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


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

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

Это объект со свойствами:
  • 0, 1, ..., n - элементы этого "массива"
  • length - число элементов

Больше никаких свойств и методов у него нет!

Автор: Zeroglif 22.7.2007, 16:46
Цитата(Alik_Kirillovich @  22.7.2007,  16:37 Найти цитируемый пост)
Больше никаких свойств и методов у него нет!

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

Автор: Alik_Kirillovich 22.7.2007, 22:05
Цитата(Zeroglif @ 22.7.2007,  17:46)
Цитата(Alik_Kirillovich @  22.7.2007,  16:37 Найти цитируемый пост)
Больше никаких свойств и методов у него нет!

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


Ну, во всяком случае, это явно не свойства массива... Так что еще раз повторяю: выглядит может быть и как массив, но ведет себя совсем не как массив!

Автор: lexxICON 23.7.2007, 10:55
Короче говоря это http://www.w3.org/TR/DOM-Level-2-Core/core.html#ID-536297177 smile

Автор: lexxICON 23.7.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);
  }
}


Автор: check 23.7.2007, 11:36
Цитата(Alik_Kirillovich @  22.7.2007,  16:37 Найти цитируемый пост)
Выглядит может быть и как массив, но ведет себя совсем НЕ КАК МАССИВ!
Потому что это коллекция.

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