że chcę programowo wstawić dodatkowy <tspan>
w elemencie <text>
w poniższej SVG:Dlaczego nie zostały narysowane programowo elementy SVG <tspan>, z wyjątkiem d3.js?
<svg width="300" height="500">
<text x="50" y="100">
<tspan x="50">one</tspan>
<tspan x="50" dy="20">two</tspan>
<tspan x="50" dy="20">three</tspan>
</text>
</svg>
To można zrobić z, między innymi, czysty JavaScript (.appendChild
), jQuery (.append
) i d3 .js (.append
). Jednak, chociaż wszystkie trzy metody z powodzeniem wstawić element, mogę tylko wydają się dostać do faktycznie wyświetlić gdy jest włożona przez d3.js:
Zobacz zmniejszoną sprawę w tym skrzypce: http://jsfiddle.net/2NLJY/.
Zachowanie jest spójne w testowanych przeglądarkach: Firefox, Chrome i Safari (wszystkie OS X 10.8).
Co się tutaj dzieje?
To ma sens. Naprawienie, które właśnie doprowadziło mnie z powrotem do faktycznego problemu, który próbowałem zbadać tutaj: dlaczego są ignorowane (czasami) atrybuty 'dy' podczas wstawiania' 'elementów programowo? http://jsfiddle.net/2NLJY/1/ To nawet nie wygląda tak samo w Safari, tak jak w przeglądarce Chrome i Firefox ... –
serhalp
@serhalp, to kolejne pytanie. Powinieneś awansować i/lub zaakceptować odpowiedź powyżej. – mccannf
Choć przydatne, to tylko częściowo odpowiada na moje pytanie. Utworzenie elementu za pomocą createElementNS, jak podano, nie wyświetla '' w oczekiwanej lokalizacji. –
serhalp