通过JavaScript基于字符串创建SVG元素

5
有没有一种简单的方法在纯JavaScript中(无库)将字符串转换为SVG元素? 像这样:
var data = '<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><path d="M5 3l3.057-3 11.943 12-11.943 12-3.057-3 9-9z"/></svg>';

//convert this string to a DOM element

更新

我使用DOMParser API(https://developer.mozilla.org/en-US/docs/Web/API/DOMParser)解决了该问题。

var data = '<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><path d="M5 3l3.057-3 11.943 12-11.943 12-3.057-3 9-9z"/></svg>';

function createSVGElement(data) {
  var parser = new DOMParser();
  var doc = parser.parseFromString(data, "image/svg+xml");
  document.body.appendChild(doc.lastChild);
}

它的表现非常好,我不需要使用一个 div。
2个回答

6
您可以创建一个占位符元素,设置 innerHTML,然后获取 firstChild
var placeholder = document.createElement('div');
placeholder.innerHTML = '<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><path d="M5 3l3.057-3 11.943 12-11.943 12-3.057-3 9-9z"/></svg>';
var elem = placeholder.firstChild;

2
你可以使用这个:
var div = document.createElement('div')
document.body.appendChild(div)
div.innerHTML = '<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><path d="M5 3l3.057-3 11.943 12-11.943 12-3.057-3 9-9z"/></svg>'

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接