问题描述
jslint 告诉 Unexpected 'for'。 所以我认为我必须使用 foreach 进行转换 但是怎么样? 如果有人可以帮忙 谢谢
// Grab the original element
var original = document.getElementsByTagName("noscript")[0];
// Create a replacement tag of the desired type
var replacement = document.createElement("span");
var i;
// Grab all of the original's attributes,and pass them to the replacement
for(i = 0,l = original.attributes.length; i < l; ++i){
var nodeName = original.attributes.item(i).nodeName;
var nodeValue = original.attributes.item(i).nodeValue;
replacement.setAttribute(nodeName,nodeValue);
}
// Persist contents
replacement.innerHTML = original.innerHTML;
// Switch!
original.parentNode.replaceChild(replacement,original);
解决方法
i = 0,
后面有一个逗号
应该是分号。
另一个问题是声明 l = original.attributes.length
您不需要变量 l
只需将其用作 for(i = 0; i < original.attributes.length; ++i){
如果你仍然想使用 forEach 你可以这样做:
original.attributes.forEach(element => {
var nodeName = element.nodeName;
var nodeValue = element.nodeValue;
replacement.setAttribute(nodeName,nodeValue);
});
,
感谢您的回答,我收到了 Uncaught TypeError: original.attributes.forEach is not a function
function Switch() {
var original = document.getElementsByTagName("noscript")[0];
var replacement = document.createElement("span");
original.attributes.forEach(element => {
var nodeName = element.nodeName;
var nodeValue = element.nodeValue;
replacement.setAttribute(nodeName,nodeValue);
});
// Persist contents
replacement.innerHTML = original.innerHTML;
// Switch!
original.parentNode.replaceChild(replacement,original);
}