d3.sélectionnez(“#element”) ne fonctionne pas lorsque le code au-dessus de l'élément html
Cela fonctionne:
<div id="chart"></div>
<script>var svg = d3.select("#chart").append("svg:svg");</script>
Ce n'est pas le cas:
<script>var svg = d3.select("#chart").append("svg:svg");</script>
<div id="chart"></div>
J'ai essayé d'emballage le code jquery document.ready(), en saisissant l'élément avec jquery, et en passant en d3.sélectionnez, mais cela ne fonctionne pas non plus. Modifier une Fois que j'ai eu l'jquery document.prêt() syntaxe droit, il a travaillé.
Toute façon je peux inclure du javascript dans le haut de la page, et encore sélectionner un élément ci-dessous? Merci.
- Solution facile, mais d'une question délicate que l'on pourrait facilement oublier. Comme l'écrit le plus voté solution. Soyez prudent au sujet de jouer avec les éléments dom, avant qu'ils sont en train d'être créé. En d'autres mots, avant qu'ils existent dans le dortoir de la hiérarchie. Pour charger le script après l'élément par le nom de char ID.
Vous devez vous connecter pour publier un commentaire.
En d'autres termes, il ne se passe rien parce que vous ne pouvez pas requête contre quelque chose qui n'existe pas encore-si juste de le faire après le chargement de la page (ici via jquery).
Btw, son recommandé que vous placez vos fichiers JS, avant la fermeture de votre balise body.
d3.select($("#chart"))
, mais cela ne fonctionne pas non plus. En dépit de la D3 docs en déclarant:These methods can also accept nodes, which is useful for integration with third-party libraries such as jQuery or developer tools
Pas assez de réputation de commentaire pour le moment donc je vais mettre ça ici:
De se développer sur de Micah réponse - le navigateur exécute votre code de haut en bas, alors si vous écrivez:
Le navigateur va créer une div avec l'id "graphique", puis exécutez votre script, qui va essayer de trouver div, et, hourra, succès.
Sinon, si vous écrivez:
Le navigateur exécute votre script, et essaie de trouver un div avec l'id de tableau, mais il n'a pas encore été créé de sorte qu'il échoue.
ENSUITE le navigateur crée un div avec l'id "graphique".
Utiliser jQuery
$(document)
fonction...suffit d'ajouter votre
<script src="./custom.js"></script>
avant</bod>
tag. c'est l'offre le temps ded3.select(#chart)
détecter votre#chart
élément dans le corps htmlJe viens de constater que si votre id de l'élément est juste un
number
, puis la d3.sélectionnez("1234"), ne fonctionnera pas.L'identifiant unique doit être un
alpha-numeric
caractère.d3.sélectionnez("1234")d3.sélectionnez("container1234")
S'il vous plaît essayer cette approche. Il a travaillé pour moi.