javascript迭代类数组对象getElementsByTagName

在编写脚本的时候将常用到迭代如:

var list=[1,2,3,4];

  for(var i=0,i<list.length,i++)
  {
    alert(list[i]);
  }

也可以写成

var list=[1,2,3,4];

  for(var i in list)

  {

    alert(list[i]);

  }

   由于getElementsByTagName返回NamedNodeMap对象,它是一个类似数组的对象,也有length属性,所以也可以像迭代一般数组一样迭代这个NamedNodeMap对象:
var all=document.body.getElementsByTagName('*');
for(i=0;i<all.length;i++)

{//对all[i]的对象进行操作}
但是如果用for(i in all)的方法进行迭代,可能会出现问题,因为循环会包括NamedNodeMap对象的附加方法,i的值会分别等于length,item,namedItem。这个时候,就要用hasOwnProperty()方法来避免这个问题,如果对象属性和方法是是非继承的,那么hasOwnProperty()方法返回true。即这里的检查不涉及从其它对象继承的属性和方法,只检查特定对象中自身直接创建的属性,比如分配给数组的元素。如果在for(i in ...)执行这种检查,就会跳过length这样的属性,因为length这样的属性不是all对象自己的,而是继承自NamedNodeMap对象的。

var all=document.all.getElementsByTagName('*');

for(i in all)

{
  if(!hasOwnProperty(i))
    {
      continue;
    }
   //对all[i]的对象进行操作
    alert();
}

转载于:https://www.cnblogs.com/weigui008vvv/archive/2012/09/11/2680405.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值