2014-11-08 82 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