我有一个返回对象的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 ???
答案 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;
}