我写了一个用于创建新元素的函数。代码工作正常,但该函数没有为我的元素设置该属性(我的浏览器不会引发错误)。我尝试了几种方法但没有任何效果。
function createElement(name, element, attribute, valueOfAttribute, text, indexOfChildNodes) {
name = document.createElement(element.toLowerCase());
var nodeText = document.createTextNode(text);
name.appendChild(nodeText);
var l = indexOfChildNodes;
document.childNodes[l].appendChild(name);
if(typeof attribute === 'array' && typeof valueOfAttribute === 'array'){
for(var i = 0, len = attribute.length; i<len; i++){
//name.setAttribute(attribute[i], valueOfAttribute[i]);
var attr = document.createAttribute(attribute[i]);
attr.value = valueOfAttribute[i];
name.setAttributeNode(attr);
}
} else {
return 'Check your "attribute" and "valueOfAttribute" arguments';
}
}
createElement('next', 'button', ['id'], ['next'], 'Next', 1);
答案 0 :(得分:2)
这是因为数组的typeof
永远不会在JavaScript中返回"array"
。
您可以使用现代Array.isArray()
方法,也可以尝试使用原型的老派技巧:
if (Object.prototype.toString.call(attribute) === '[object Array]') { ... }