最新消息:雨落星辰是一个专注网站SEO优化、网站SEO诊断、搜索引擎研究、网络营销推广、网站策划运营及站长类的自媒体原创博客

Create svg element based on string via javascript - Stack Overflow

programmeradmin3浏览0评论

Is there an easy way to convert an string to svg element in vanilla javascript (no libraries)? Like:

var data = '<svg xmlns="" 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

Update

I solved that by using the DOMParser API

var data = '<svg xmlns="" 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);
}

It worked really well, and I don' have to use a div.

Is there an easy way to convert an string to svg element in vanilla javascript (no libraries)? Like:

var data = '<svg xmlns="http://www.w3/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

Update

I solved that by using the DOMParser API https://developer.mozilla/en-US/docs/Web/API/DOMParser

var data = '<svg xmlns="http://www.w3/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);
}

It worked really well, and I don' have to use a div.

Share Improve this question edited Dec 13, 2016 at 20:53 and-k asked Dec 13, 2016 at 20:42 and-kand-k 6071 gold badge8 silver badges16 bronze badges
Add a ment  | 

2 Answers 2

Reset to default 6

You can create a placeholder element, set the innerHTML, then get the firstChild

var placeholder = document.createElement('div');
placeholder.innerHTML = '<svg xmlns="http://www.w3/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;

You can use this:

var div = document.createElement('div')
document.body.appendChild(div)
div.innerHTML = '<svg xmlns="http://www.w3/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>'
发布评论

评论列表(0)

  1. 暂无评论