如何用javascript动态更改html中svg的文本内容

如何用javascript动态更改html中svg的文本内容,javascript,svg,Javascript,Svg,我的要求是删除g中的文本元素和另一个文本元素。 但当我运行这段代码时,写入的文本被完全删除,但添加新的文本标记并没有显示出来。当我打开Chrome的developer部分时,它会显示我添加的文本标记,但它不会显示在视图中。当我从chrome的开发者部分更新任何东西时,DOM再次重新加载,我的新文本将显示在视图中 <!DOCTYPE html> <html lang="en"> <head> <meta charset="ut

我的要求是删除
g
中的文本元素和另一个文本元素。 但当我运行这段代码时,写入的文本被完全删除,但添加新的文本标记并没有显示出来。当我打开Chrome的developer部分时,它会显示我添加的
文本
标记,但它不会显示在视图中。当我从chrome的开发者部分更新任何东西时,DOM再次重新加载,我的新文本将显示在视图中

<!DOCTYPE html>  

<html lang="en">
    <head>
        <meta charset="utf-8" />
        <title></title>
    </head>
    <body>
    <svg id="t">
    <g>
        <text x="10" y="10">hello</text>
    </g>
    </svg>
    <script>
            var s = document.getElementById('t');
            var g = s.childNodes[1];
            console.log(g.childNodes[1].remove());//remove text must in my case
            var txt = document.createElement('text');
            txt.setAttribute('x', '10');
            txt.setAttribute('y', '10');
            var t = document.createTextNode("This is a paragraph.");
            txt.appendChild(t);
            g.appendChild(txt);

    </script>        
    </body>
</html>

你好
var s=document.getElementById('t');
var g=s.childNodes[1];
log(g.childNodes[1].remove())//在我的情况下,必须删除文本
var txt=document.createElement('text');
setAttribute('x','10');
setAttribute('y','10');
var t=document.createTextNode(“这是一个段落”);
txt.appendChild(t);
g、 附加子文件(txt);

创建SVG元素时必须使用
createElements

document.createElementNS('http://www.w3.org/2000/svg', 'text');

如果要更改文本,无需删除整个元素并重新创建。您只需通过选择文本元素更改textcontent,并将新内容设置为它,如下所示:

document.getElementById('t').childNodes[1].childNodes[1].innerHTML= "This is a paragraph";
请参见此处的工作示例:


你好
document.getElementById('t').childNodes[1].childNodes[1].innerHTML=“这是一个段落”//在我的情况下,必须删除文本

如果您在d3内工作,您只需
d3.select('#svgTextId').html(newHTML)

先生,您能解释一下我如何使用foreignObject来代替您动态创建的文本标记吗。在foriegnObject中,我必须使用文本标记。foreignObject和text标记都是动态创建的。您的问题仍然存在问题吗?或者其中一个答案帮你解决了吗?现在解决了。谢谢如果其中一个答案解决了你的问题。如果您自己解决了这个问题,请将您的解决方案作为答案发布。