在JavaScript中,将类名分配给常规元素和命名空间元素是否不同?
当我尝试选择类名并更改填充颜色时,我收到了一个null值的cannotaccess样式,因此没有按照我希望的方式分配类名。任何帮助都会很棒。尝试使用setAttribute在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
函数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
返回”
)。polygonclassName
属性实际上吐出了一个看起来很奇怪的对象,看起来像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";
}