getAttribute()错误

时间:2013-01-29 16:43:23

标签: javascript

我在firefox中遇到一个关于getAttribute不是函数的错误。下面是我的代码,标有错误行。

    var nodeList = document.getElementsByTagName("input");
    for(item in nodeList){
        try{
        if(nodeList[item].getAttribute("type") == "file"){
            //ERROR HERE///->var id = nodeList[item].getAttribute("id");
            var fileSelector = document.getElementById(id);
            document.getElementById(id).addEventListener("change",function(e){
                if(e){
                    e.preventDefault();
                }

                if (fileSelector.files) {
                    window.file = fileSelector.files[0];
                } else {
                    window.file = fileSelector.value;
                }
                readData();
            });
        }
        }catch(e){}
    }

3 个答案:

答案 0 :(得分:0)

试试这样:

 var nodeList = document.getElementsByTagName("input");
 var max = nodeList.length;
    for(var i=0; i<max ; i++){
        try{
        if(nodeList[i].getAttribute("type") == "file"){
            //ERROR HERE///->var id = nodeList[item].getAttribute("id");
            var fileSelector = document.getElementById(id);
            document.getElementById(id).addEventListener("change",function(e){
                if(e){
                    e.preventDefault();
                }

                if (fileSelector.files) {
                    window.file = fileSelector.files[0];
                } else {
                    window.file = fileSelector.value;
                }
                readData();
            });
        }
        }catch(e){}
    }

答案 1 :(得分:0)

可能nodeList[item]不是节点。使用for循环代替for..in

var i, len = nodeList.length;
for(i=0; i<len; i += 1){
    try {
        if(nodeList[i].getAttribute("type") == "file"){
            // ...

答案 2 :(得分:0)

请参阅JSFiddle了解

for (item in nodeList)

012作为数组索引,这没关系。

但随后它提供了更多属性lengthitemnamedItem,这些属性不是DOM元素,也没有getAttribute()函数。

因此,正如其他人已经建议的那样,使用正常的for循环。