我想在jobs.scan对象中访问availJobs,但我不能。它没有在jobs.attack中定义。如何在其他对象中访问jobs.scan的部分?
var jobs = new Array();
jobs.scan = function() {
var availJobs = new Array();
var jobContents = dom.get("app8743457343_content");
var boldthreads = jobContents.getElementsByTagName('b');
for(var i = 0; i < boldthreads.length; i++) {
if(boldthreads[i].style.color == 'silver') {
availJobs.push(boldthreads[i].textContent);
}
}
return availJobs;
}
jobs.attack = function() {
jobs.scan();
alert(jobs.availJobs[0]);
}
jobs.attack();
jobs.attack中的感谢所有的帮助!! 这是我提出的代码:
var jobs = {
availJobs: new Array(),
scan: function() {
var jobContents = dom.get("app8743457343_content");
var boldthreads = jobContents.getElementsByTagName('b');
for(var i = 0; i < boldthreads.length; i++) {
if(boldthreads[i].style.color == 'silver') {
this.availJobs.push(boldthreads[i].textContent);
}
}
},
attack: function() {
this.scan();
alert(this.availJobs[0]);
},
};
jobs.attack();
这段代码肯定更优雅你不觉得吗?我用过这个并且有效!
答案 0 :(得分:4)
{}用于初始化对象和Array以初始化数组。
var jobs = {
availJobs : new Array()
}
jobs.scan = function() {
var jobContents = dom.get("app8743457343_content");
var boldthreads = jobContents.getElementsByTagName('b');
for(var i = 0; i < boldthreads.length; i++) {
if(boldthreads[i].style.color == 'silver') {
availJobs.push(boldthreads[i].textContent);
}
}
return availJobs;
}
在{}声明中,如果用逗号(,)分隔它们,可以在对象中添加多个成员:
var jobs = {
availJobs : new Array(),
anotherMember : null,
anotherArray : new Array(),
aFunction = function() {...}
}
答案 1 :(得分:0)
我可能在这里错了,但我很确定你需要在函数本身之外声明availJobs,IE:jobs.availJobs = new Array();
答案 2 :(得分:0)
您的代码不正确。 jobs.scan
是一个函数,jobs.attack
是另一个函数。 availJobs
是jobs.scan
中定义的局部变量。您不能从另一个函数访问一个函数的局部变量。
更多的是,当您尝试访问它时,availJobs
不存在,因为jobs.scan已经完成。
答案 3 :(得分:0)
您需要声明availJobs数组,并且作业应该是一个对象。
var jobs = {}
jobs.availJobs = []
jobs.scan = function() {
var availJobs = new Array();
var jobContents = dom.get("app8743457343_content");
var boldthreads = jobContents.getElementsByTagName('b');
for(var i = 0; i < boldthreads.length; i++) {
if(boldthreads[i].style.color == 'silver') {
availJobs.push(boldthreads[i].textContent);
}
}
return availJobs;
}
jobs.attack = function() {
jobs.scan();
alert(jobs.availJobs[0]);
}
jobs.attack();