下面是我的代码,表格不显示出来。使用Chrome的开发人员/元素显示元素已创建,但在浏览器渲染时我看不到它。数据是正确的,因为元素显示在开发人员/元素下。使用d3通过id向svg追加表格
<svg id="abc" width="100%" height="100%"
viewBox="-20 -20 800 800"
preserveAspectRatio="none"></svg>
function createSpreadsheet(incData){
var keyValues = d3.keys(incData[0])
d3.select("#abc")
.append("table")
d3.select("table")
.append("tr")
.attr("class", "head")
.selectAll("th")
.data(keyValues)
.enter()
.append("th")
.html(function (d) {return d})
d3.select("table")
.selectAll("tr.data")
.data(incData).enter()
.append("tr")
.attr("class", "data")
d3.selectAll("tr")
.selectAll("td")
.data(function(d) {return d3.entries(d)})
.enter()
.append("td")
.html(function (d) {return d.value})
}
d3.json("data.json", function(error,data){
createSpreadsheet(data)
)}
data=[{'A':'123', 'B':'456'}, {'A':'321', 'B':'654'}]
您的表格将永远不会显示。你*不能*追加任何HTML标签(div,h1,p,table等)到SVG(除非使用foreignObject)。开发工具将显示这些元素,因为它会保留*任何*元素。试试这个:'d3.select(“#abc”)。append(“dolphin”);'。你会看到'',这是没有意义的。 –
在函数'createSpreadsheet'中,尝试'd3.select(“body”)'或任何其他HTML div,并且您的表格可能会显示出来。 –
我认为@GerardoFurtado你应该将其作为答案,想知道为什么它的评论。 – Cyril