HTML表的动态Rowspan创建

时间:2017-10-26 13:03:46

标签: javascript jquery

问题:寻找Jquery或javascript解决方案以创建动态表以及Rowspan。我面临着获取父行并添加rowspan的问题。

非常感谢您的帮助。

这是我的JSON格式

 {"nodes":[{"data":"All","nodes":[{"data":"Incident Management","nodes":[{"data":"Global","nodes":[{"data":"Bangalore","nodes":[{"data":"85.00%","nodes":[{"data":"90.00%","nodes":[{"data":"test","nodes":null}]}]},{"data":"90.00%","nodes":[{"data":"95.00%","nodes":[{"data":"test","nodes":null}]}]}]},{"data":"Frimley","nodes":[{"data":"85.00%","nodes":[{"data":"90.00%","nodes":[{"data":"test","nodes":null}]}]},{"data":"90.00%","nodes":[{"data":"95.00%","nodes":[{"data":"test","nodes":null}]}]}]},{"data":"Palo Alto","nodes":[{"data":"85.00%","nodes":[{"data":"90.00%","nodes":[{"data":"test","nodes":null}]}]},{"data":"90.00%","nodes":[{"data":"95.00%","nodes":[{"data":"test","nodes":null}]}]}]}]}]},{"data":"Service Availability","nodes":[{"data":"Global","nodes":[{"data":"N/A","nodes":[{"data":"85.00%","nodes":[{"data":"90.00%","nodes":[{"data":"","nodes":null}]}]}]}]}]}]}]}

这是我想要实现的目标

table look

HTML

<table>
  <tbody>
<tr class="odd">
  <td rowspan="7">All</td>
  <td rowspan="6">Incident Management</td>
  <td rowspan="6">Global</td>
  <td rowspan="2">Bangalore</td>
  <td rowspan="1">85.00%</td>
  <td rowspan="1">90.00%</td>
  <td rowspan="1">test</td>
</tr>
<tr class="even">
  <td rowspan="1">90.00%</td>
  <td rowspan="1">95.00%</td>
  <td rowspan="1">test</td>
</tr>
<tr class="odd">
  <td rowspan="2">Frimley</td>
  <td rowspan="1">85.00%</td>
  <td rowspan="1">90.00%</td>
  <td rowspan="1">test</td>
</tr>
<tr class="even">
  <td rowspan="1">90.00%</td>
  <td rowspan="1">95.00%</td>
  <td rowspan="1">test</td>
</tr>
<tr class="odd">
  <td rowspan="2">Palo Alto</td>
  <td rowspan="1">85.00%</td>
  <td rowspan="1">90.00%</td>
  <td rowspan="1">test</td>
</tr>
<tr class="even">
  <td rowspan="1">90.00%</td>
  <td rowspan="1">95.00%</td>
  <td rowspan="1">test</td>
</tr>
<tr class="odd">
  <td rowspan="1">Service Availability</td>
  <td rowspan="1">Global</td>
  <td rowspan="1">N/A</td>
  <td rowspan="1">85.00%</td>
  <td rowspan="1">90.00%</td>
  <td rowspan="1">test</td>
</tr>

    

1 个答案:

答案 0 :(得分:0)

虽然有一个。

var data = {"data":"Start","nodes":[{"data":"All","nodes":[{"data":"Incident Management","nodes":[{"data":"Global","nodes":[{"data":"Bangalore","nodes":[{"data":"85.00%","nodes":[{"data":"90.00%","nodes":[{"data":"test","nodes":null}]}]},{"data":"90.00%","nodes":[{"data":"95.00%","nodes":[{"data":"test","nodes":null}]}]}]},{"data":"Frimley","nodes":[{"data":"85.00%","nodes":[{"data":"90.00%","nodes":[{"data":"test","nodes":null}]}]},{"data":"90.00%","nodes":[{"data":"95.00%","nodes":[{"data":"test","nodes":null}]}]}]},{"data":"Palo Alto","nodes":[{"data":"85.00%","nodes":[{"data":"90.00%","nodes":[{"data":"test","nodes":null}]}]},{"data":"90.00%","nodes":[{"data":"95.00%","nodes":[{"data":"test","nodes":null}]}]}]}]}]},{"data":"Service Availability","nodes":[{"data":"Global","nodes":[{"data":"N/A","nodes":[{"data":"85.00%","nodes":[{"data":"90.00%","nodes":[{"data":"","nodes":null}]}]}]}]}]}]}]}

function getNodeCount(obj){
	var num = 0
	if(obj.nodes){
		for(var i=0;i<obj.nodes.length;i++){
			num += getNodeCount(obj.nodes[i])
		}
	}else
		num = 1
	return num
}

function createRowHTML(data,html){
	if(html==null) html = '<tr>'
	html += '<td rowspan="'+getNodeCount(data)+'">'+data.data+'</td>'
	if(data.nodes){
		for(var i=0;i<data.nodes.length;i++){
			if(i==0)
				html += createRowHTML(data.nodes[i],'')
			else
				html += createRowHTML(data.nodes[i])
		}
	}else
		html += '</tr>'
	return html
}


var html = createRowHTML(data)



document.getElementById('result').innerHTML = '<table>'+html+'</table>'
table td{
  border: solid 1px black;
}
<div id="result"></div>