如何遍历取出HTMLCollection里各个节点的属性值,并生成数组

前言

有时,我们想批量取出HTMLCollection里的某个属性值,并将其生成数组,这里,为大家介绍一种简单有效的方法。

例子代码如下所示:
var div = document.createElement('div')
var p1 = document.createElement('p')
p1.textContent = '1'
var p2 = document.createElement('p')
p2.textContent = '2'
div.appendChild(p1)
div.appendChild(p2)

此时,我们控制台打印div..children,输出一个HTMLCollection集合,如下图所示
在这里插入图片描述
我们该如何将p里的innerHTML取出,并生成数组呢?

正文

function prop(name) {
    return function (obj) {
        return obj[name];
    };
}
function map(fn, list) {
    var ret = [];
    for (var i = 0; i < list.length; ++i) {
        ret[i] = fn(list[i]);
    }
    return ret;
}
var inner = prop('innerHTML'); // 亦可配置其他属性,如class

map(inner, div.children); // 输出["1", "2"]

上述代码简单有效,可灵活控制输出节点对应的属性集合。

如果,我想取出HTMLCollection集合内的class,代码如下图所示:

div.children[0].classList = 'class1'
div.children[1].classList = 'class2'

var classI = prop('className')
map(classI, div.children) // ["class1", "class2"]

TS写法


function prop<T> (name: string) {
  return function (obj: {[index: string]: T}) {
    return obj[name]
  }
}

function map (fn: any, list: any[]) {
  var ret = []
  for (var i = 0; i < list.length; ++i) {
    ret[i] = fn(list[i])
  }
  return ret
}

var inner = prop('innerHTML')

看完之后,是不是觉得真香?

  • 7
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 7
    评论
评论 7
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值