0
나는 다음과 같은 코드를D3 데이터는 모든 요소를 표시되지
JS 있습니다
var cities = [
{ name: "Moscow", x: 585, y: 565 },
{ name: "Kiev", x: 735, y: 765 },
];
HTML :
<svg .....>
// My SVG code
</svg>
<script>
// d3.select("svg").append("text").text(cities[0].name).attr("x", cities[0].x).attr("y", cities[0].y).attr("font-size",18).attr("fill", "black");
// d3.select("svg").append("text").text(cities[1].name).attr("x", cities[1].x).attr("y", cities[1].y).attr("font-size",18).attr("fill", "black");
d3.select("svg").data(cities).enter().append("text").text(function(d) { return d.name; }).attr("x", function(d) { return d.x; }).attr("y", function(d) { return d.y; }).attr("font-size",18).attr("fill", "black");
</script>
내가 D3에 새로운 해요. 내가 정의한 배열을 반복하는 코드에 대해 주석 처리 된 코드를 변환하려고했습니다. 그러나, 주석 처리되지 않은 코드로 인쇄 된 마지막 요소 만 가져옵니다. 왜 그리고 어떻게 수정해야합니까?
이 예제는 작동하지 않습니다. 그러나 나는 그것이 작동하는 이유가 확실하지 않지만 답변을 해결했습니다. d3.selectAll ("SVG") .DATA (도시)으로 .Append ("텍스트")는 .text (함수 (d) {복귀 d.name}) .attr ("X", 함수 (.attr ("fill", "black") .attr ("y", function (d) {return dy;}) .attr ("font-size", 18) ; select를 select all로 변경하고 'enter'지시문을 삭제해야합니다. SelectAll은 다른 요소를 하나만 선택한다고 생각하기 때문입니다. 제거. 왜 이것이 차이가 나는지 잘 모르겠습니다. – ShaneCook
@ShaneCook 답변을 업데이트했습니다. '.selectAll ('svg')'와'.append ('text')'를 사용하면'body '에 추가 할 두 개의'text' 요소를 생성합니다. –
내 버전은 두 가지 요소에 대해서만 작동했습니다. 적어도 데모 버전의 대답은 정확하고 더 큰 요소로 작동합니다. 많은 감사합니다. – ShaneCook