2011-10-21 120 views
0

以下,非常基本的腳本,在Chrome和Safari失敗,此錯誤Cannot call method 'appendChild' of null拉斐爾JS失敗

<!DOCTYPE html> 
<html lang="en"> 
    <head> 
     <script type="text/javascript" src="raphael-min.js"> 
     </script> 

     <script type="text/javascript"> 

      var paper = Raphael("canvas", 320, 200); 

     </script> 
    </head> 
    <body> 
     <div id="canvas"></div> 
    </body> 
</html> 

我不知道爲什麼 - 任何人嗎?

+0

你能改寫的標題問題,或者更具體的(例如,添加錯誤消息)? –

+0

@MichaelPaulukonis - 他已經發布了錯誤信息 –

回答

5

當DOM準備就緒時,您應該包裝呼叫。

<script type="text/javascript"> 
// Using JQuery 

$(function() { 
    var paper = Raphael("canvas", 320, 200); 
}); 
</script> 
+1

我當然應該!我只是想出了。它沒有在文檔中的任何地方說 - 我應該知道這一點 - 但它應該在文檔中! –

+1

好的例子有它。加 - 只是想 - 我是否訪問dom? –

+0

如果在創建dom元素之前調用它,幾乎任何在現有dom元素上運行的javascript函數都會失敗。 – James

1

或者只是叫你所定義的div後的功能...

<!DOCTYPE html> 
<html lang="en"> 
    <head> 
     <script type="text/javascript" src="raphael-min.js"> 
     </script> 
    </head> 
    <body> 
     <div id="canvas"></div> 
     <script type="text/javascript">var paper = Raphael("canvas", 320, 200);</script> 
    </body> 
</html>