首页  >  问答  >  正文

javascript - 数组的过滤和渲染

var data = [{

    label: '分类一',
    value: '0'
}, {
    label: '分类二',
    value: '1'
}, {
    label: '分类三',
    value: '2'
}, {
    label: '分类四',
    value: '3'
}, {
    label: '分类五',
    value: '4'
}, {
    label: '分类六',
    value: '5'
}]

<p class="text">

<span>0</span>
<span>1</span>
<span>2</span>
<span>3</span>
<span>4</span>
<span>5</span>

</p>

求教,请问如何能够最简单的根据数据里的value值在 dom 里渲染出相应的label值??数据是不定的,可能里面会有十几二十个

仅有的幸福仅有的幸福2696 天前895

全部回复(4)我来回复

  • PHP中文网

    PHP中文网2017-06-26 10:54:24

    楼上的的方式可以做到,但是这样就相当于每次都生命一个变量,每一次都往.text里面添加了span节点,操作了DOM,造成很大的开销!我个人建议用下面这个方式。

    var opText= document.querySelector('.text'),var _text="";
    data.forEach(function(item){
        //把每一次遍历的label加上节点,再储存在_text上。
        _text += '<span>'+item.label+'</span>';
    });
    //最后直接把_text赋值到opText.innerHTML上。
    opText.innerHTML=_text ;
    

    回复
    0
  • PHP中文网

    PHP中文网2017-06-26 10:54:24

    雷雷

    回复
    0
  • 给我你的怀抱

    给我你的怀抱2017-06-26 10:54:24

    楼上的方法都是可行的,不过前两中方法在火狐跟chrome下的性能各有优缺点,现在普遍做法上通过创建一个新的空白的文档片段( DocumentFragment)。

    const $container = document.querySelector('.text');
    const fragment = document.createDocumentFragment();
    data.map(item => {
        let span = document.createElement("span");
        span.textContent = item;
        fragment.appendChild(span);
    });
    $container.appendChild(fragment);

    回复
    0
  • typecho

    typecho2017-06-26 10:54:24

    雷雷

    回复
    0
  • 取消回复