我正在尝试警告下面循环的每个条件中的值(在函数returnFunction中)。我有一个函数myFunction,结构如下:
var myFunction = function () {
window.myArray = {
1: returnFunction("a"),
2: returnFunction("b"),
3: returnFunction("c"),
4: returnFunction("d"),
5: returnFunction("e"),
6: returnFunction("f"),
7: returnFunction("g")
}
}
returnFunction看起来像这样:
var returnFunction = function (classID) {
var myArray = [], tempcounter = 0;
tempcounter = document.getElementsByClassName(classID).length;
myArray = {classID : tempcounter};
return alert(myArray[0] + ' ' + myArray[1]);
}
提醒的返回值是 undefined undefined
我的理解是这里的流程是当调用myFunction时,它调用returnFunction 7次,每次发送一个代表DOM中特定类的不同字符串(“a”到“g”)。对于给定的类“a”到“g”,然后计算类(classID)的实例数,并返回classID和一个数字,该数字应该在警报中返回。
谁能告诉我这里哪里出错?
答案 0 :(得分:0)
在returnFunction中,更改
myArray = { classID : tempcounter};
return alert(myArray[0] + ' ' + myArray[1]);
到
myArray[classID] = tempcounter;
return alert(classID + ' ' + myArray[classID]);
答案 1 :(得分:0)
这段代码很乱,所以我会尝试清理它。
假设此函数的要点是捕获页面上所有对象的当前长度,这一点更清楚:
var classArr = ['a','b','c','d','e','f','g'],
lengthObj = {},
getLength = function(classID){
return document.getElementsByClassname(classID).length;
},
lengthFunc = function(){
for(var i = classArr.length; i--;){
lengthObj[i+1] = {
classArr[i]:getLength(classArr[i])
};
}
}
lengthFunc();
执行以下操作:
顺便说一下,将alert
返回给一个对象(或数组,或者一个)的值是没有意义的,但是分配classID:length
的对象更有意义。每个值。最后要注意的是,我会使lengthFunc
0索引而不是1索引,但我保持它与你的相同,因此[i+1]
。
答案 2 :(得分:0)
你写了
myArray = { classID: tempCounter}
特别是你创建了一个对象,而不是一个数组,只有一个键,键是classID
。此对象没有键0
,也没有键1
。因此,myArray['classID']
将被定义,但myArray[0]
将不会。注意对象
foo = { '0': tempCounter }
将定义为foo[0]
。与创建数组相比,这就是创建一个带键作为数字的对象。
您应该使用数组而不是对象,或者在访问对象时访问对象,而不是访问数组。