2016-10-10 8 views
0

私はhttp://d3js.org/d3.v3.min.jsを使用しています。d3jsを使用してidを持つdivに要素を追加する方法javascript

私はbody html要素にsvgを追加するコードを持っています。 <div id="svg">

私は試してみてください。:VAR svg = d3.select(document.getElementById("svg")).append("svg")...

var svg = d3.select("body").append("svg") 
     .attr("width", width + margin.right + margin.left) 
     .attr("height", height + margin.top + margin.bottom) 
     .append("g") 
     .attr("transform", "translate(" + margin.left + "," + margin.top + ")"); 

このコードは、私はJavaScriptで新しいですし、私は私のdivにこのSVGを追加するコードを記述する方法がわからない

<body><svg>を追加しますそれは動作しません。

ありがとうございました!

編集:

<style> 
     .node circle { 
      fill: #fff; 
      stroke: steelblue; 
      stroke-width: 3px; 
     } 

     .node text { font: 12px sans-serif; } 

     .link { 
      fill: none; 
      stroke: #ccc; 
      stroke-width: 2px; 
     } 
    </style> 
    <script src="http://d3js.org/d3.v3.min.js"></script> 
    <script> 

     var treeData = [ 
      { 
       "name": "Top Level", 
       "parent": "null", 
       "children": [ 
        { 
         "name": "Level 2: A", 
         "parent": "Top Level", 
         "children": [ 
          { 
           "name": "Son of A", 
           "parent": "Level 2: A" 
          }, 
          { 
           "name": "Daughter of A", 
           "parent": "Level 2: A" 
          } 
         ] 
        }, 
        { 
         "name": "Level 2: B", 
         "parent": "Top Level" 
        } 
       ] 
      } 
     ]; 

     // ************** Generate the tree diagram ***************** 
     var margin = {top: 20, right: 120, bottom: 20, left: 120}, 
     width = 960 - margin.right - margin.left, 
       height = 500 - margin.top - margin.bottom; 

     var i = 0; 

     var tree = d3.layout.tree() 
       .size([height, width]); 

     var diagonal = d3.svg.diagonal() 
       .projection(function (d) { 
        return [d.y, d.x]; 
       }); 

//  var svg = d3.select("div#tree").append("svg") 
      var svg = d3.select("#tree").append("svg") 
       .attr("width", width + margin.right + margin.left) 
       .attr("height", height + margin.top + margin.bottom) 
       .append("g") 
       .attr("transform", "translate(" + margin.left + "," + margin.top + ")"); 

     root = treeData[0]; 

     update(root); 

     function update(source) { 

      // Compute the new tree layout. 
      var nodes = tree.nodes(root).reverse(), 
        links = tree.links(nodes); 

      // Normalize for fixed-depth. 
      nodes.forEach(function (d) { 
       d.y = d.depth * 180; 
      }); 

      // Declare the nodes… 
      var node = svg.selectAll("g.node") 
        .data(nodes, function (d) { 
         return d.id || (d.id = ++i); 
        }); 

      // Enter the nodes. 
      var nodeEnter = node.enter().append("g") 
        .attr("class", "node") 
        .attr("transform", function (d) { 
         return "translate(" + d.y + "," + d.x + ")"; 
        }); 

      nodeEnter.append("circle") 
        .attr("r", 10) 
        .style("fill", "#fff"); 

      nodeEnter.append("text") 
        .attr("x", function (d) { 
         return d.children || d._children ? -13 : 13; 
        }) 
        .attr("dy", ".35em") 
        .attr("text-anchor", function (d) { 
         return d.children || d._children ? "end" : "start"; 
        }) 
        .text(function (d) { 
         return d.name; 
        }) 
        .style("fill-opacity", 1); 

      // Declare the links… 
      var link = svg.selectAll("path.link") 
        .data(links, function (d) { 
         return d.target.id; 
        }); 

      // Enter the links. 
      link.enter().insert("path", "g") 
        .attr("class", "link") 
        .attr("d", diagonal); 

     } 

    </script> 

答えて

1

をテストするだけでd3.select("#svg")を使用するための完全なコードがあります。

+0

ご返信ありがとうございますが、これは私を助けません。私のdivにidツリーでsvgを追加しません。コンソールにエラーログはありません。 –

+1

@ jiofriau..svg append codeを '#svg' divの下に移動します。 –

+1

これで完璧に動作します。ご協力いただきありがとうございます。 –

関連する問題