Javascript对象数组没有返回正确的值?

时间:2012-06-27 20:35:08

标签: javascript javascript-objects

我有一个返回对象的JavaScript函数。我将该对象存储在myarray对象中,并尝试使用switch返回匹配的值。当我返回匹配的值,即“未定义”

时,它给出了错误的结果

请阅读以下代码及其评论

parseobjectarray('description') // "undefined"


function parseobjectarray(attribute) {
    var returnval;
    $(document).ready(function () {
        var myArray = new Object(); 
        myArray = ParsePagetags(); // returns an object
        switch (attribute) {
            case 'description':
                returnval = myArray.description;
                //alert(returnval); // shows correct result
                break;
            default:
                returnval = "";
        }
            //alert(returnval); // shows correct result
    });
    alert(returnval); // shows incorrect result i.e "undefined"
    return returnval; // shows incorrect result i.e "undefined"
}

WHY ???

4 个答案:

答案 0 :(得分:2)

您:

alert(returnval);

不在:

之内
$(document).ready(function () {

});

尝试:

$(document).ready(function () {

    function parseobjectarray(attribute) {

        var returnval;
        var myArray = new Object();
        myArray = ParsePagetags(); // returns an object array

        switch (attribute) {
            case 'description':
                returnval = myArray.description;
                alert(returnval); // shows correct result
            break;
            default:
                returnval = "";
        }

        alert(returnval); // shows correct result
        return returnval;
    }

    parseobjectarray(yourAttribute);

});

答案 1 :(得分:1)

$(document).ready()内的方法在alert(returnVal)之后

答案 2 :(得分:1)

这里的架构是完全错误的。您正在初始化变量,然后调用$(document).ready()方法,尝试提醒returnval变量,然后返回变量。

尝试以下结构:

function parseobjectarray(attribute) {  
    var returnval;  

    var myArray = new Object();
    myArray = ParsePagetags(); // returns an object
    switch (attribute) {
        case 'description':
            returnval = myArray.description;
            alert(returnval); // shows correct result
            break;
        default:
            returnval = "";
    }
    alert(returnval); // shows correct result  

    return returnval;
}

$(document).ready(function(){
    parseobjectarray(attribute);
});

$(document).ready()用于在文档加载后建立事件侦听器或触发指定的函数。如果您希望在加载文档并且希望重用该函数后触发此函数,则从该方法中移动函数声明,然后单独调用该函数。

如果该函数不会被重用,那么您可以将函数声明保留在$(document).ready()函数中。

答案 3 :(得分:0)

有没有特殊的理由让$(document).ready(...在你的函数里面?试试没有document.ready ...

function parseobjectarray(attribute) {
var returnval;

    var myArray = new Object();
    myArray = ParsePagetags(); // returns an object array
    switch (attribute) {
        case 'description':
            returnval = myArray.description;
            alert(returnval); // shows correct result
            break;
        default:
            returnval = "";
    }

alert(returnval); // shows incorrect result i.e "undefined"
return returnval;
}
相关问题