【发布时间】:2019-08-20 01:15:26
【问题描述】:
我正在尝试创建一个对象数组,每个对象都有自己独特的 feTurbulence 过滤器和独特的属性。 我正在生成过滤器,然后将它们附加到现有的 SVG 元素。 我遇到的问题是,当我尝试动态创建过滤器时,标签被呈现为 feturbulence 而不是 feTurbulence。 到目前为止,这是我尝试过的:
var testfilter = document.createElement('filter');
var turbulence = document.createElement("feTurbulence")
var dispMap = document.createElement('feDisplacementMap')
var filterHolder = document.getElementById("filterHolder")
testfilter.setAttribute("id", "filter1");
turbulence.setAttribute("type","fractalNoise");
turbulence.setAttribute("baseFrequency",".003");
turbulence.setAttribute("numOctaves","5");
turbulence.setAttribute("seed","8517");
testfilter.appendChild(turbulence);
dispMap.setAttribute("in", "SourceGraphic");
dispMap.setAttribute("scale", "180");
testfilter.appendChild(dispMap);
filterHolder.appendChild(testfilter);
我已经尝试将 feTurbulence 作为变量传递,如下所示,但它仍然呈现为全小写
var turbString = "feTurbulence";
var turbStringCap = turbString.substring(0,2) + turbString.charAt(2).toUpperCase() + turbString.slice(3);
var turbulence = document.createElement(""+turbStringCap+"")
有谁知道如何解决这个问题或我哪里出错了?任何建议将不胜感激
【问题讨论】:
-
您必须使用 createElementNS 来创建带有 SVG 命名空间的 SVG 元素。您不能使用只创建 HTML 元素的 createElement。
标签: javascript svg svg-filters