开发者问题收集

无法读取 null 和其他 null 变量的属性“appendChild”

2017-02-14
16731

在开始之前,我只想让你知道我对 Web 开发还很陌生。我还想将其保留 100% javascript,因此暂时不使用 jquery 或其他语言。

以下代码源自此视频: https://www.youtube.com/watch?v=esa5hJegRfI

我收到的错误如下:

Uncaught TypeError: Cannot read property 'appendChild' of null at drawBarChart (script.js:58) at script.js:66

这是 javascript:

var sampleData = [23,45,14,47,24,57,24,35];

function _div(id){
    return document.getElementById(id);
}

function drawBarChart(dataset, idOfContainer){

var chartContainer = _div(idOfContainer)

if(typeof(dataset) != "object"){
    return;
}

var heightOfContainer = chartContainer.scrollWidth;

var widthOfContainer = chartContainer.scrollHeight;

var widthOfBar = parseInt(widthOfContainer / dataset.length) - 2;

for(var i = 0; i < dataset.length; i++){

    var divElement = document.createElement("div");

    divElement.setAttribute("class", "div2");

    divElement.style.marginLeft = parseInt(i * 2 + i * widthOfBar) + "px";
    divElement.style.height = parseInt(dataset[i]) + "px";
    divElement.style.width = parseInt(widthOfBar) + "px";
    divElement.style.top = (heightOfContainer - parseInt(dataset[i]) - 1) + "px";
    chartContainer.appendChild(divElement);

}
return false;
}



drawBarChart(sampleData, "div1");



console.log();

由于相同的错误,变量 heightOfContainer 和 widthOfContainer 不起作用:

Uncaught TypeError: Cannot read property 'scrollWidth' of null at drawBarChart (script.js:42) at script.js:66

Uncaught TypeError: Cannot read property 'scrollHeight' of null at drawBarChart (script.js:44) at script.js:66

最后一个 appendChild 函数似乎不起作用,我已经查看了其他类似的问题,但似乎找不到一。 相关的 HTML 代码只是一个 div,但如果您想要它,它在这里:

<div id="div1" ></div>

我知道这个错误非常个人化,不会影响很多人,但我已经在其他地方寻求帮助,但我找不到它不起作用的原因。希望您能帮忙,谢谢您的时间。

1个回答

您的代码在 DOM 准备好之前就已加载,因此选择器无法在页面上找到这些元素。

您可以将 JS 放在页面底部,以便在代码运行之前完全加载 DOM,反过来您的 div 元素可供选择器使用。

这是一个 jsbin。

http://jsbin.com/poqefopuyu/edit?html,output

Mike Havrilla
2017-02-14