javascript - 陣列的過濾和渲染
仅有的幸福
仅有的幸福 2017-06-26 10:52:24
0
4
855

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值? ?數據是不定的,可能裡面會有十幾二十個

仅有的幸福
仅有的幸福

全部回覆(4)
Ty80

樓上的方式可以做到,但是這樣就相當於每次都生命一個變量,每一次都往.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 ;
Ty80

雷雷

给我你的怀抱

樓上的方法都是可行的,不過前兩中方法在火狐跟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);
typecho

雷雷

熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板
關於我們 免責聲明 Sitemap
PHP中文網:公益線上PHP培訓,幫助PHP學習者快速成長!