设置元素的属性

时间:2014-06-27 14:59:08

标签: javascript dom

我写了一个用于创建新元素的函数。代码工作正常,但该函数没有为我的元素设置该属性(我的浏览器不会引发错误)。我尝试了几种方法但没有任何效果。

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

1 个答案:

答案 0 :(得分:2)

这是因为数组的typeof永远不会在JavaScript中返回"array"

您可以使用现代Array.isArray()方法,也可以尝试使用原型的老派技巧:

if (Object.prototype.toString.call(attribute) === '[object Array]') { ... }

DEMO: http://jsfiddle.net/QXrwZ/