如何将 for 转换为 foreach

问题描述

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);

}