繁体   English   中英

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

[英]Javascript Object array does not return correct value?

我有一个返回对象的JavaScript函数。 我将该对象存储在myarray对象中,并尝试使用switch返回匹配的值。 当我返回匹配的值(即“ undefined”)时,它给我错误的结果

请阅读下面的代码及其注释

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(...的特殊原因?尝试不使用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;
}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM