| 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 | 1× 2× 2× 5× 5× 3× 3× 3× 3× 3× 3× 3× 2× 1× 1× 1× 1× 2× 2× 3× 1× 1× 1× 1× 1× | //如果直接将tr元素写table下面,那么浏览器将将它们(相邻的那几个),放到一个动态创建的tbody底下
export function makeTbody(nodes) {
var tbody, needAddTbody = false,
count = 0,
start = 0,
n = nodes.length
for (var i = 0; i < n; i++) {
var node = nodes[i]
if (!tbody) {
Eif (node.nodeName === 'tr') {
//收集tr及tr两旁的注释节点
tbody = {
nodeName: 'tbody',
props: {},
children: []
}
tbody.children.push(node)
needAddTbody = true
Eif (start === 0)
start = i
nodes[i] = tbody
}
} else {
if (node.nodeName !== 'tr' && node.children) {
tbody = false
} else {
tbody.children.push(node)
count++
nodes[i] = 0
}
}
}
Eif (needAddTbody) {
for (i = start; i < n; i++) {
if (nodes[i] === 0) {
nodes.splice(i, 1)
i--
count--
Eif (count === 0) {
break
}
}
}
}
} |