2014-11-08 39 views
1

请告诉我为什么我无法在我的家html文件中创建此示例?来自文档的jQuery问题

下面是从site和我的html文件的一个例子:

<head> 
<script src="http://dygraphs.com/dygraph-dev.js"></script> 
<script> 
g = new Dygraph(document.getElementById("graph"), 
       "X,Y,Z\n" + 
       "1,0,3\n" + 
       "2,2,6\n" + 
       "8,14,3\n", 
       { 
        legend: 'always', 
        animatedZooms: true, 
        title: 'dygraphs chart template' 
       });   
</script> 
<style> 
.dygraph-title { 
    color: gray; 
} 
</style> 
</head> 
<body> 
<div id="graph"></div> 
</body> 

我究竟做错了什么?

+0

添加MooTools的框架 – dm4web 2014-11-08 20:38:45

+0

小提琴似乎使用Mootols库。我认为你可能需要在代码中添加对这个库的引用。如果没有,请验证控制台是否发生错误。 – ianaya89 2014-11-08 20:38:56

回答

2

的javascript脚本必须经过股利或你需要使用的文件准备先装入身体,然后脚本

<html> 
<head> 
    <title></title> 
    <script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js"></script> 
<script src="http://dygraphs.com/dygraph-dev.js"></script> 
<style> 
.dygraph-title { 
    color: gray; 
} 
</style> 
</head> 
<body> 
<div id="graph"></div> 
<script> 
g = new Dygraph(document.getElementById("graph"), 
       "X,Y,Z\n" + 
       "1,0,3\n" + 
       "2,2,6\n" + 
       "8,14,3\n", 
       { 
        legend: 'always', 
        animatedZooms: true, 
        title: 'dygraphs chart template' 
       });   
</script> 
</body> 
</html> 
+0

谢谢你!它帮助我! – user3731374 2014-11-08 20:47:03

+0

我认为这不是一个最明确的答案。 @Guffa的答案更加适用。 – rogelio 2014-11-08 21:06:22

0

的一个主要问题是,你的代码太早运行。您正试图在DOM元素被加载之前对其进行操作。在<head>部分中运行的代码还不能访问DOM中的元素,因为它尚未加载。

您可以将第二个<script>标记移动到</body>标记之前,并且该问题应该消失。

1

由于您的getElementById调用将返回null,因为当您运行Javascript代码时该元素还不存在。

将代码放在加载事件,这样它运行的页面已经被解析后:

window.onload = function(){ 

    g = new Dygraph(document.getElementById("graph"), 
    ... 

}; 
+0

只是为了补充你的答案。这个问题标记为jQuery,所以他可以解决这个问题,将代码放入ready事件'$(document).ready(function(){g = new Dygraph ...});' – rogelio 2014-11-08 21:09:37

+0

@rogelio:是的,它被标记为这样,但代码似乎没有使用它,并且链接的小提琴不包括它。无论如何,另一种选择并不坏。 – Guffa 2014-11-08 21:23:15