在JavaScript中,将类名分配给常规元素和命名空间元素是否不同?

在JavaScript中,将类名分配给常规元素和命名空间元素是否不同?,javascript,namespaces,classname,Javascript,Namespaces,Classname,当我尝试选择类名并更改填充颜色时,我收到了一个null值的cannotaccess样式,因此没有按照我希望的方式分配类名。任何帮助都会很棒。尝试使用setAttribute 函数foo(){ var svg=document.querySelector(“.crumer”); 让多边形=document.createElements(“http://www.w3.org/2000/svg“,”多边形“); setAttribute('class','polygon01'); appendChi

当我尝试选择类名并更改填充颜色时,我收到了一个null值的cannotaccess样式,因此没有按照我希望的方式分配类名。任何帮助都会很棒。

尝试使用setAttribute

函数foo(){
var svg=document.querySelector(“.crumer”);
让多边形=document.createElements(“http://www.w3.org/2000/svg“,”多边形“);
setAttribute('class','polygon01');
appendChild(多边形);
}
函数foo01(){
让actualPolygon=document.querySelector(“.polygon01”);
actualPolygon.style=“填充:红色”;
}
foo()
foo01()查看您提供的SVG名称空间,它指出
className
已被弃用,并使用
classList

//创建多边形并添加类
让多边形=document.createElements(“http://www.w3.org/2000/svg“,”多边形“);
polygon.classList.add(“polygon01”);
//附加到元素
document.querySelector(“.crumer”).appendChild(多边形);
//使用querySelector参照多边形并添加填充:红色样式
让actualPolygon=document.querySelector(“.polygon01”);
actualPolygon.style.fill=“红色”;
console.log(actualPolygon.style.fill)

谢谢,是什么让您想到检查SVG的更新?我只是想知道我将来是否可以尝试自我更正。在我们之间,这是我第一次看规范,我之所以这么做是因为
createElements(…)。与我们预期的相比,className
看起来很奇怪(一个空字符串,与
document.createElement('a')。className
返回
)。polygon
className
属性实际上吐出了一个看起来很奇怪的对象,看起来像
SVGAnimatedString{baseVal:,animVal:}
,我不知道那里发生了什么。这足以让我看到它们是否以某种方式破坏了
className
,而且确实,对于这个名称空间,它是不推荐使用的。它看起来像是在动画或其他过程中动态更改类的接口:。如果你好奇的话,可以随意探索一下。
function foo(){
  var svg = document.querySelector(".crusher");
  let polygon = document.createElementNS("http://www.w3.org/2000/svg", "polygon");
  polygon.className = "polygon01";
  svg.appendChild(polygon);
}

function foo01(){
  let actualPolygon = document.querySelector(".polygon01");
  actualPolygon.style = "fill:red";
}