开发者问题收集

Cytoscape:即使有教程也会出现 TypeError

2017-05-16
1139

我想使用 Cytoscape.js ,所以我复制粘贴了他们的 教程 :

var cy = cytoscape({
    container: document.getElementById('cy')
});

... 我得到了这个(在 Firefox 控制台上):

TypeError: r is null

和这个(在 Safari 控制台上):

TypeError: null is not an object (evaluating 'r.className')

错误在 Chrome 上仍然存在,始终指向 cytoscape.min.js 的第 39 行。

当然,我有一个 HTML <div id="cy"></div> 元素。

为什么我为什么会收到此错误?另外,我尝试添加一些节点,它们在 JSFiddle 上呈现,但在浏览器上却没有呈现...

2个回答

错误原因如下:我试图在页面加载 之前 初始化 Cytoscape 图形,因此 Cytoscape 在 HTML 中找不到任何 #cy div。

解决方案就是将初始化包装在一个函数中,并在页面加载后调用此函数(使用 <body onload="setupMyGraph();"> ... </body> )。

Giorgio
2017-05-16

据我所知,这应该可以解决你的问题

document.addEventListener("DOMContentLoaded", function() {
  cy = cytoscape({
    container: document.getElementById("cy"),
  })
 <cytoscape stuff like adding nodes, setting style, ...>
})
Tom Aerts
2017-05-19