Javascript 对象数组不返回正确的值

Javascript Object array does not return correct value?

本文关键字:返回 对象 数组 Javascript      更新时间:2023-09-26

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

为什么???

你的:

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

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

你这里的架构是完全错误的。 您正在初始化一个变量,然后调用 $(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()函数中。

是否有特殊原因需要 $(document).ready(...在你的函数内?尝试没有文档.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;
}