无法加载Raphael.js库,找不到appendChild方法?

时间:2010-11-04 20:11:33

标签: javascript raphael appendchild

我正在尝试将raphael.js(已下载并在本地运行)加载到HTML文件中,但脚本拒绝退出,在我的JS控制台中出错:

Uncaught TypeError: 
Cannot call method 'appendChild' of null
bV                   on raphael.js:7
a                    on raphael.js:7
(anonymous function) on raphael.html:22

这是针对缩小版本,第1789行的非最小版本也会出现相同的错误。

我从网站上下载了代码,尝试了压缩和未压缩,以及下载其中一个演示中链接的JS文件,所有这些都可以在我的浏览器中工作(chrome)。

有什么想法吗?

1 个答案:

答案 0 :(得分:28)

我遇到了同样的问题,结果却是一个加载订单问题。这是原始代码:

<!doctype html>
<html>
  <head>
    <script src='raphael-1.5.2.js'></script>
    <script>
        var paper = Raphael(10, 50, 300, 250);
        var circle = paper.circle(50, 40, 10);
        circle.attr('fill', '#c00');
        circle.attr('stroke', '#fff');
    </script>
  </head>

  <body></body>
</html>

事实证明,当调用Raphael(10, 50, 300, 250)时,它会尝试将一个canvas元素附加到正文......但它尚不存在。因此将它包装在window.onload或jQuery onload函数中可以解决问题:

<!doctype html>
<html>
  <head>
    <script src='raphael-1.5.2.js'></script>
    <script src='https://ajax.googleapis.com/ajax/libs/jquery/1.4.4/jquery.min.js'></script>
    <script>
      $(function () {
        var paper = Raphael(10, 50, 300, 250);
        var circle = paper.circle(50, 40, 10);
        circle.attr('fill', '#c00');
        circle.attr('stroke', '#fff');
      });
    </script>
  </head>

  <body></body>
</html>