2016-09-01 15 views
1

D3-4.2.2でレスポンシブチャートを作成するには、次のコードを試しています。D3角度cli:d3.getElementsByTagNameは関数ではありません

import * as D3 from 'd3'; 

let d3:any = D3; 

var container = d3.getElementsByTagName('line-graph'), 
    width = container[0].offsetWidth, 
    height = container[0].offsetHeight; 

var svg = d3.select(this.htmlElement).append("svg") 
    .attr("class", "line-graph") 
    .attr("width", "100%") 
    .attr("height", "100%") 
    .attr('viewBox', '0 0 ' + Math.min(width, height) + ' ' + Math.min(width, height)) 
    .attr('preserveAspectRatio', 'xMinYMin') 
    .append("g") 
    .attr("transform", "translate(" + Math.min(width, height)/2 + "," + Math.min(width, height)/2 + ")"); 

ブラウザのコンソールは

d3.getElementsByTagName is not a function 

どれ提案

が評価されています。 d3.getElementsByTagName('line-graph') に: d3.select('line-graph')

+0

これは同じ問題であるかどうかはわかりませんが、彼女は助けてくれるスタック回答のリンクですhttp://stackoverflow.com/questions/26848368/typeerror-getelementsbytagname-is-not-a-function-issue – Simo

答えて

0

変更ありがとうこれは、ドキュメントオブジェクトのネイティブJavaScriptメソッドです。したがって、あなたがdocumentを使用する必要があります。

var container = document.getElementsByTagName('line-graph'), 
    width = container[0].offsetWidth, 
    height = container[0].offsetHeight; 

document.getElementsByTagNameは、ノードリストを返し、あなたがcontainer後(あなたのケースでは、[0])インデックスを必要とする理由です。ここで

はドキュメントです:https://developer.mozilla.org/en-US/docs/Web/API/Document/getElementsByTagName

PS:私は「ライン・グラフ」という名前のタグについて聞いたことはありません。おそらくgetElementsByClassName、またはgetElementByIdが必要です。

0

はD3.js.には機能getElementsByTagNameありません

はあなたが

関連する問題