我需要將多個textareas
的值與對象的屬性相匹配。它應該只是一個比賽,如果:在不使用全局的情況下訪問另一個函數中的局部變量
- 正在使用的
textarea
的值等於對象中包含的和 - 的人的名字,如果textarea的指數等於這個人的ID。 (CF 布爾在我的小提琴:https://jsfiddle.net/Lau1989/hxcpstty/1/)
要做到這一點,我需要從這個函數訪問對象test = {}
:
function make_test(name, job, ID) {
var test = {}; //local variable to be used in 'function suggest(index)'
test.name = name;
test.job = job;
test.ID = ID;
return test;
}
new make_test("Paul", "manager", 1);
new make_test("John", "employee", 2);
new make_test("Jan", "employee", 2);
這裏面一個:
function suggest(index) {
if (test.ID === index && test.name == thisInput.value) {
thisOutput.innerHTML = "Has job : " + test.job; //should access 'test' properties : test.name, test.job, test.ID
}
}
問題是聲明test = {};
作爲全局變量將只允許function suggest(index)
找到'Jan',因爲它是我聲明的最後一個。但是,如果我聲明var test = {};
作爲本地變量,它將根本不工作,因爲function suggest(index)
不能從外部訪問var test = {};
。
這是我卡住的地方。我的目標是在suggest()
之內訪問var test = {};
以獲取每個人的工作,具體取決於他們的name
和ID
。
感謝您的幫助
您需要一個數組來保存對所有人員的引用,或者如果員工ID是唯一的(在您的示例中它不是*),則可以使用對象而不是數組。另外,調用函數時不需要'new'。所以:'var employees = []; employees.push(make_test(...));'。 – nnnnnn
@Jecoms有人建議OP問另一個問題,以'建議'功能http://stackoverflow.com/questions/39968429/dynamically-access-function-object-property#comment67216922_39968451 – guest271314
@nnnnnn:這就是我想要做的起初,但他們不會有我需要的其他兩個屬性(作業和ID),除非我推動數組中的對象?我最初希望避免使用數組對象,因爲迭代數組加上該對象將多次打印相同的結果。我可能是錯誤的,因爲我仍然試圖擴大我的知識在JavaScript – Lau