0

我有一个返回对象的 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"
}

为什么???

4

4 回答 4

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);

});
于 2012-06-27T20:37:49.003 回答
1

您的方法在$(document).ready()执行之后alert(returnVal)运行。

于 2012-06-27T20:39:01.770 回答
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()函数中。

于 2012-06-27T20:43:32.077 回答
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;
}
于 2012-06-27T20:40:27.647 回答