2011-10-21 2 views
0

Ce qui suit, un script très basique, échoue dans Chrome et Safari avec cette erreur Cannot call method 'appendChild' of nullRaphael JS échoue

<!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> 

Je ne sais pas pourquoi - tout le monde?

+0

Pouvez-vous reformuler le titre en question, ou pour être plus précis (par exemple, ajouter le message d'erreur)? –

+0

@MichaelPaulukonis - il a déjà posté le message d'erreur –

Répondre

5

Vous devez renvoyer l'appel lorsque le DOM est prêt.

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

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

Je devrais certainement! Je l'ai juste compris. Il ne dit pas ça n'importe où dans les docs - je devrais le savoir vraiment - mais ça devrait être dans les docs! –

+1

bien les exemples l'ont. plus - il suffit de penser - suis-je accéder à la dom? –

+0

Pratiquement toute fonction javascript qui fonctionne sur un élément dom existant échouera si vous l'appelez avant de créer l'élément dom. – James

1

Ou tout simplement appeler la fonction après avoir défini le 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>