2016-06-23 21 views
3

Ich habe einen D3 Sankey-Graph erstellt. Das Problem, mit dem ich konfrontiert bin, ist, dass ich die Knoten nicht ziehen kann. Dies ist, wie der Knoten erstellt:Uncaught TypeError in D3 Sankey Drag-Funktion

var node = svg.append("g").selectAll(".node") 
     .data(graph.nodes) 
    .enter().append("g") 
     .attr("class", "node") 
     .attr("transform", function(d) { return "translate(" + d.x + "," + d.y + ")"; }) 
     .on("click",highlight_node_links) 
    .call(d3.behavior.drag() 
     .origin(function(d) { return d; }) 
     .on("dragstart", function() { this.parentNode.appendChild(this); }) 
     .on("drag", dragmove)); 

Und die Dragmove-Funktion ist wie folgt:

function dragmove(d) { 

    d3.select(this).attr("transform", 
     "translate(" + (
       d.x = Math.max(0, Math.min(width - d.dx, d3.event.x)) 
      ) + "," + (
        d.y = Math.max(0, Math.min(height - d.dy, d3.event.y)) 
      ) + ")"); 
    sankey.relayout(); 
    link.attr("d", path); 
    } 

Aber immer wenn ich meinen Code ausführen, wirft es diesen Fehler: Uncaught Typeerror: nicht lesen kann Eigenschaft 'Ziel' von null

Was mache ich falsch?

If I click on the error, it takes me to a blank line on the index page

+0

Ich sehe keine Eigenschaft "Ziel" wird gelesen. Weißt du, aus welcher Zeile der Fehler stammt? Wenn ja, kannst du es bitte angeben? –

+0

Keine dieser Zeilen .. Und ich bin nicht in der Lage herauszufinden, welche Zeile einen Fehler wirft. Ich habe versucht, Debugger der dragmove-Funktion hinzufügen, aber es scheint, die Schleife wird nicht eingegeben @ JonathanLam – d33a

+0

Sehen Sie diesen Fehler, wenn Sie ziehen oder wenn der Code eingibt? Es sieht so aus, als ob du d3noobs code [hier] folgst (http://bl.ocks.org/d3noob/c9b90689c1438f57d649), oder? Um weitere Fehler zu beheben, müssen Sie eine jsfiddle oder ploker erstellen, die den Fehler reproduziert. Meine Vermutung wäre, dass es Links gibt, die sich auf nicht existierende Knoten beziehen. – Mark

Antwort

2

Der Fehler aufgrund der Platzierung des Skripts wurde in dem Programm geworfen. Während ich das Diagramm in eine Seite mit vielen anderen Inhalten integrierte, platzierte ich das Skript in den Kopfbereich, der das Problem zu verursachen schien. Nun, ich habe es am Ende platziert, alles funktioniert gut. Es tut mir leid, dass ich das gepostet habe, ich war albern.

<html> 
    <style><!-- Style for the Sankey graph --> 
    </style> 
    <body> 
     <div id="sankey-graph"> 
     </div> 
     <script><!-- Script for the Sankey graph --> 
     </script> 
    </body> 
</html> 

Dies ist die korrekte Art und Weise ich denke. Ich hatte mein Skript zuerst vor das Div, das Sankey-Graph enthielt, gestellt.