2013-11-09 9 views
5

Ich war von dieser Seite den Code ausprobieren: http://bl.ocks.org/bycoffe/3230965Nachricht „d3.js Typeerror: n undefiniert“ (für D3 Weltkarte mit Kraft-Layout)

enter image description here

Ich halte den Fehler haben, dass " n ist undefiniert ".

Bei der weiteren Verkleinerung, habe ich zu dem Schluss gekommen, dass das Problem mit diesen Linien ist:

(function() { 
     var width = 800; 
     var height = 700; 
     var padding = 10; 
     var k; 
     var node; 

     var pixelLoc = d3.geo.mercator(); 
     pixelLoc.scale(2000); 

     svg = d3.select('#map') 
       .append('svg:svg') 
       .attr('width', width) 
       .attr('height', height); 

     d3.json('coordinates.json', function(coordinates) { 

     var coords = []; 
     var xs = []; 
     var ys = [] 
     for (alias in coordinates) { 
      coords.push(coordinates[alias]); 
      xs.push(coordinates[alias][0]); 
      ys.push(coordinates[alias][1]); 
     } 

     var minX = d3.min(xs); 
     var maxX = d3.max(xs); 
     var xScale = d3.scale.linear().domain([minX, maxX]).range([-50, -30]); 
     var minY = d3.min(ys); 
     var maxY = d3.max(ys); 
     var yScale = d3.scale.linear().domain([minY, maxY]).range([-20, -10]); 

     d3.json('medals.json', function(medals) { 

      var pointScale = d3.scale.sqrt().domain([0, 80]).range([0, 75]); 

      nodes = [] 

      for (i=0; i<medals.length; i++){ 
       node = medals[i]; 
       node.coordinates = coordinates[node.alias]; 
       node.cx = xScale(pixelLoc(node.coordinates)[0]); 
      } 

     }) 

Die Frage stellt sich mit der letzten Zeile:

node.cx = xScale(pixelLoc(node.coordinates)[0]); 

Ich habe jedoch noch keine Ahnung, was sie mit "n ist undefiniert" meinen. Kann jemand helfen?

+0

Können Sie ein [jsfiddle] (http://jsfiddle.net/) erstellen, das das Problem zeigt? Es gibt kein "n" in der Zeile, auf die Sie zeigen, und es ist unklar, was das Problem sein könnte. –

+0

gut im Grunde können Sie versuchen, die Codes in der HTML-Link, den ich angegeben habe. Kopieren und fügen Sie es einfach ein und versuchen Sie es lokal auszuführen. Das n bezieht sich nicht auf die Codes in der Zeile. es bezieht sich auf die Javascript-Datei von d3.js. – user2972046

+1

Ah, läuft es lokal Sie sagen. Dann vermute ich, dass Sie die Datei 'medias.json' nicht auf einem lokalen Webserver hosten, während Sie die' index.html' öffnen. Ist das der Fall? –

Antwort

2

Wenn Sie d3.min verwenden:

Ändern der Bibliothek von d3.min.js Sie herausfinden, d3.js wahrscheinlich, dass die Fehler Änderungen

Typeerror: Array nicht definiert ist

Das bedeutet, dass die Funktionen min und max nicht ordnungsgemäß funktionieren.