我正在努力从函数调用中返回一个数组 - 代码如下:
///////////// Generic Functions
function spotJoinPosition() {
var pos = {
offset: $('div#spotJoinSite').offset(),
width: $('div#spotJoinSite').width(),
height: $('div#spotJoinSite').height()
}
return(pos);
}
var positionData = spotJoinPosition();
alert(positionData);
alert(positionData[width]);
当我提醒positionData时,我得到[object] [object]然后未定义。
么?
答案 0 :(得分:6)
alert(positionData[width]);
这是在positionData中警告一个键,并使用变量width
作为键。您尚未定义名为width
的变量,因此它实际上是在查找positionData[undefined]
。您想要的是positionData.width
或positionData['width']
,但此处没有理由引用。
只有拥有非字母数字字符的密钥才需要引号。 positionData['some-key']
有效,但positionData.some-key
是语法错误,因为变量中不能包含-
。
此外,您的代码应该是错误的,因为宽度没有在任何地方定义。我担心你的代码中有一个全局定义的width
变量。
答案 1 :(得分:1)
那是因为positionData
是一个对象(你从spotJoinPosition
返回的对象)和变量变量width
是未定义的width
包含对象上不存在的值。
您需要positionData.width
或positionData['width']
。
答案 2 :(得分:0)
尝试:
alert(positionData.offset);
alert(positionData.width);
alert(positionData.height);
答案 3 :(得分:0)
如果您确实需要返回array
而不是object
的通用函数,则可能需要修改为以下内容:
///////////// Generic Functions
function spotJoinPosition(selector) {
var el = $(selector),
result = [el.offset(), el.width(), el.height()];
return(result);
}
var positionArray = spotJoinPosition("#spotJoinSite");
alert(positionArray[0]); // outputs the position
alert(positionArray[1]); // outputs the width