问题很简单,document.getElementsByTagName('*')没有选择 SVG 标签,并且在控制台中出现错误。
但是,如果我删除了 SVG 标签,则可以正常工作。
我的代码:
var Master = document.getElementsByTagName('*');
/* NOT WORKING TOO
var Master = document.getElementsByTagName('body')[0].getElementsByTagName('*');
var Master = document.querySelectorAll('*');
*/
var Vector = [];
for (var i=0; i < Master.length; i++){
Master[i].className = Master[i].className.trim();
console.log("Class > " + Master[i].className);
if (Master[i].className != ""){
var chaps = Master[i].className.split(/\s+/);
for (var j=0; j < chaps.length; j++){
Vector.push(chaps[j]);
}
}
}
//console.log(Vector);Run Code Online (Sandbox Code Playgroud)
<section class="classMaster">
<h1 class="title-1"><b>Title:</b> Anyone</h1>
<h2 class="title-2">Title T2</h2>
<p class="parrafe"><b>Strong:</b> Year 2019.<p/>
<p class="parrafe"><b>Text:</b> Everybody.</p>
<p><b>by: </b>StackOverflow</p>
</section>
<svg></svg>
<svg className="any"></svg>
<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24">
<path d="M11.99 2C6.47 2 2 6.48 2 12s4.47 10 9.99 10C17.52 22 22 17.52 22 12S17.52 2 11.99 2zM12 20c-4.42 0-8-3.58-8-8s3.58-8 8-8 8 3.58 8 8-3.58 8-8 8z"/>
<path d="M0 0h24v24H0z" fill="none"/>
<path d="M12.5 7H11v6l5.25 3.15.75-1.23-4.5-2.67z"/>
</svg>Run Code Online (Sandbox Code Playgroud)
我的 JsFiddle:
https://jsfiddle.net/RenatoRamosPuma/Lbj14xg7/9/
SVG标签有什么问题?
首先,document.getElementsByTagName(...),document.querySelector(...)并且document.querySelectorAll(...)所有人都认识 SVG。
你从你的代码中得到的错误不是因为这个。问题是因为您使用.trim()onobject而不是string。好吧,我明白了。
对于普通元素,.className返回一个字符串。然而,对于 SVG,.className返回一个SVGAnimatedString对象。
var div = document.querySelector('div');
var svg = document.querySelector('svg');
console.log('className of div: ', div.className);
console.log('className of svg: ', svg.className);Run Code Online (Sandbox Code Playgroud)
<div class="normal"></div>
<svg class="special"></svg>Run Code Online (Sandbox Code Playgroud)
要获得.classNameSVG,有 3 种方法:
var svg = document.querySelector('svg');
console.log('className of svg: ', svg.className.baseVal);Run Code Online (Sandbox Code Playgroud)
<svg class="special"></svg>Run Code Online (Sandbox Code Playgroud)
var svg = document.querySelector('svg');
console.log('className of svg: ', svg.getAttribute('class'));Run Code Online (Sandbox Code Playgroud)
<svg class="special"></svg>Run Code Online (Sandbox Code Playgroud)
3: .classList
请注意,.classList返回的是一个对象,而不是一个字符串。
var svg = document.querySelector('svg');
console.log('className of svg: ', svg.classList);Run Code Online (Sandbox Code Playgroud)
<svg class="special"></svg>Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1020 次 |
| 最近记录: |