JQUERY +从函数返回一个数组

时间:2011-09-10 09:27:40

标签: jquery

我正在努力从函数调用中返回一个数组 - 代码如下:

///////////// 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]然后未定义。

么?

4 个答案:

答案 0 :(得分:6)

alert(positionData[width]);

这是在positionData中警告一个键,并使用变量width作为键。您尚未定义名为width的变量,因此它实际上是在查找positionData[undefined]。您想要的是positionData.widthpositionData['width'],但此处没有理由引用。

只有拥有非字母数字字符的密钥才需要引号。 positionData['some-key']有效,但positionData.some-key是语法错误,因为变量中不能包含-

此外,您的代码应该是错误的,因为宽度没有在任何地方定义。我担心你的代码中有一个全局定义的width变量。

答案 1 :(得分:1)

那是因为positionData是一个对象(你从spotJoinPosition返回的对象)和变量width是未定义的变量width包含对象上不存在的值。

您需要positionData.widthpositionData['width']

See the MDN docs on member operators.

答案 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
相关问题