未捕获类型错误:无法读取空错误的属性“textContent”

问题描述 投票:0回答:3

我正在尝试使用 dc.js 来实现 crossfilter 和 d3。我几乎成功了。当我在 JSFiddle 中运行代码时,它工作得很好!但是当我尝试在本地系统上实现确切的代码时,它给了我 Uncaught TypeError: Cannot read property 'textContent' of null 错误。

我的代码是

Trial1.js

var yearChart = dc.barChart('#year-chart');

//the data
var data = [
{date: "2015-10-01", type: "car", quantity: 3}];

var dispatch = crossfilter(data);

var parseDate = d3.time.format("%Y-%m-%d").parse;
data.forEach(function (d) {
    d.date = parseDate(d.date);
    d.quantity = +d.quantity;
    d.Year = d.date.getFullYear();
});

var dateDim = dispatch.dimension(function (d) {
    return d.date;
});
var productions = dateDim.group().reduceSum(function (d) {
    return d.quantity;
});
var minDate = dateDim.bottom(1)[0].date;
var maxDate = dateDim.top(1)[0].date;

yearChart.width(2000).height(200)
    .dimension(dateDim)
    .group(productions)
    .x(d3.time.scale().domain([minDate, maxDate]))
    .brushOn(false)
	.centerBar(true)
    .yAxisLabel("Productions per day")
	.xUnits(function(){return 10;});

yearChart.render();
<html>
	<head>
	<meta charset="utf-8">
		<script src="https:////cdnjs.cloudflare.com/ajax/libs/jquery/2.1.3/jquery.min.js" charset="utf-8"></script>
		<script type="text/javascript" src="https://dc-js.github.io/dc.js/js/d3.js"></script>
		<script type="text/javascript" src="https://dc-js.github.io/dc.js/js/crossfilter.js"></script>
		<script type="text/javascript" src="https://dc-js.github.io/dc.js/js/dc.js"></script>
		<script type="text/javascript" src="https://dc-js.github.io/dc.js/js/colorbrewer.js"></script>
		<script type="text/javascript" src = "trial1.js"></script>
	</head>
	<body>
	<div id="year-chart"></div>
	</body>
</html>

d3.js中给出错误的代码行是this.node().textContent;

javascript d3.js dc.js crossfilter
3个回答
8
投票
我也有同样的问题!

localy

刚刚发现:

<div id="year-chart"></div>


放错地方了

只需尝试在

JS文件之前设置所有您的html内容。并且会正常工作!


参见示例:

obs:它在 JSFiddle 上运行,因为 html(必须)在

js

脚本之前渲染!


希望也适合您。

<!DOCTYPE html> <html lang="en"> <head> <title>dc.js - Bar Chart Example</title> <meta charset="UTF-8"> <link rel="stylesheet" type="text/css" href="http://dc-js.github.io/dc.js/css/dc.css"/> <script src="https:////cdnjs.cloudflare.com/ajax/libs/jquery/2.1.3/jquery.min.js" charset="utf-8"></script> <script src="http://dc-js.github.io/dc.js/js/d3.js" charset="utf-8"></script> <script src="http://dc-js.github.io/dc.js/js/crossfilter.js"></script> <script src="http://dc-js.github.io/dc.js/js/dc.js"></script> </head> <body> <div id="year-chart"></div> <script type="text/javascript"> var yearChart = dc.barChart('#year-chart'); //the data var data = [{ date: "2015-10-01", customer: "BOASG", quantity: 3 }]; var dispatch = crossfilter(data); var parseDate = d3.time.format("%Y-%m-%d").parse; data.forEach(function (d) { d.date = parseDate(d.date); d.quantity = +d.quantity; d.Year = d.date.getFullYear(); }); var dateDim = dispatch.dimension(function (d) { return d.date; }); var productions = dateDim.group().reduceSum(function (d) { return d.quantity; }); var minDate = dateDim.bottom(1)[0].date; window.alert(minDate); var maxDate = dateDim.top(1)[0].date; window.alert(maxDate); yearChart.width(2000).height(200) .dimension(dateDim) .group(productions) .x(d3.time.scale().domain([minDate, maxDate])) .brushOn(false) .centerBar(true) .yAxisLabel("Productions per day") .xUnits(function () { return 10; }); dc.renderAll(); </script> <!-- <div id="year-chart"></div> if you set the code here you will be able to reproduce the issue.--> </body> </html>


2
投票
.js 文件

链接移至 html 底部,问题解决了


0
投票

© www.soinside.com 2019 - 2024. All rights reserved.