我想动态创建一个看起来像地图图例的列表。因此,除了矩形外,还应该有一个彩色矩形和一个文本。我想将图例组织为无序列表。但是,我无法显示svg。我可以在检查器中看到该元素。这是我的代码:
let grp = ['A', 'B', 'C', 'D'];
let ul = document.createElement('ul');
grp.forEach(g => {
let li = document.createElement('li');
let spanSvg = document.createElement('span');
let svg = document.createElement('svg');
svg.class = 'svg-legend';
svg.setAttribute('height', '20');
svg.setAttribute('width', '40');
svg.innerHTML = '<rect height="10" width="30" style="fill: rgb(17, 95, 103);"/>';
spanSvg.appendChild(svg);
let spanTxt = document.createElement('span');
let txt = document.createTextNode(g);
spanTxt.appendChild(txt);
li.appendChild(spanSvg);
li.appendChild(spanTxt);
ul.appendChild(li);
document.getElementById('div').appendChild(ul);
});
使用document.createElementNS
,https://developer.mozilla.org/en-US/docs/Web/API/Document/createElementNS
svg的名称空间是
document.createElementNS("http://www.w3.org/2000/svg","svg");