我正在尝试动态创建SVGNumber对象并将其附加到SVGFEColorMatrixElement:

var feColorMatrix = document.createElementNS("http://www.w3.org/2000/svg", "feColorMatrix");
var numberList = this.feColorMatrix.values.baseVal;
for(var i = 0; i < 20; i++){
    // var number = document.createElementNS("http://www.w3.org/2000/svg", "SVGNumber"); // doesn't work either
    // number.value = 0;
    var number = {value:0};
    numberList.appendItem(number);
}


由于SVGNumber是接口,据我所知,这应该可以正常工作,但是我收到此错误消息:

未捕获的TypeError:无法在“ SVGNumberList”上执行“ appendItem”:参数1的类型不是“ SVGNumber”

创建诸如SVGNumber,SVGAnimatedNumber或SVGNumberList之类的对象的正确方法是什么?

SVGNumber接口:https://developer.mozilla.org/en/docs/Web/API/SVGNumber

最佳答案

<svg>元素上有一个函数,可用于创建SVGNumber对象。叫做createSVGNumber



var svg = document.createElementNS("http://www.w3.org/2000/svg", "svg");

var feColorMatrix = document.createElementNS("http://www.w3.org/2000/svg", "feColorMatrix");
var numberList = this.feColorMatrix.values.baseVal;
for(var i = 0; i < 20; i++) {
  var number = svg.createSVGNumber();
  number.value = 0;
  numberList.appendItem(number);
}

关于javascript - 创建新的SVGNumber或其他SVG元素,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/38585839/

10-09 16:09