2014-09-12 2 views
0

d3 코드를 여러 번 호출하여 출력을 내 사이트의 다른 위치에 표시하고 싶습니다. 함수 (chart)에 코드를 넣었고 두 번 호출하고 다른 인수를 전달하려고합니다.d3 : 내 코드는 하나의 차트를 만들지 만 2는 만들지 않습니다.

http://jsfiddle.net/5rk6g234/

나는 내 D3 코드에서 이상한 Uncaught TypeError: undefined is not a function 오류를 받고 있어요. 내가 한 번만 함수를 호출하지만, 최대한 빨리처럼하면 코드가 잘 실행 :이 오류가 발생합니다

chart(dj, "#c"); //dj is my data, #c is the div where I want the chart 
chart(dj, "#e"); //dj is my data, #e is the div where I want the chart 

두 번째 차트를하지 않습니다. 이견있는 사람?

+0

나는이 작동하지 않은 이유는 사실 잘 모르겠어요. 주위를 둘러 보았고 같은 데이터를 사용하여 두 개의 그래프를 작성하는 데 문제가 발생하지 않습니다. 그러나 데이터를 별도의 변수에 복사하면 그래프가 오류없이 실행됩니다. http://jsfiddle.net/5rk6g234/2/ – bencripps

답변

2

내부 chart() 살고있는이 코드 덩어리 :

data.forEach(function(d){ 
    d.d_string = parseDate(d.d_string); 
    d.c_string = +d.c_string; 
    }); 

가 처음 실행, 그것은 당신이 무엇을 기대할 않습니다; d.d_stringDate 개체로 변환합니다. 두번째로, d.d_string은 이미 Date이고, d3의 date 파서는 오직 String만을 기대하기 때문에 에러가납니다.

당신이 chart 이외의 그 블록을 이동 (그리고 djdata의 이름을 변경)하는 경우 그것은 잘 작동 :

var parseDate = d3.time.format("%Y-%m-%d").parse; 
dj.forEach(function(d){ 
    d.d_string = parseDate(d.d_string); 
    d.c_string = +d.c_string; 
}); 

The modified fiddle

관련 문제