Мне нужно сопоставить значение нескольких textareas
с свойствами объекта. Это должно быть только матч, если:Доступ к локальной переменной в другой функции без использования глобального
- значение
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)
найти «Ян», потому что это последний, который я объявил. Но если я объявлю var test = {};
в качестве локальной переменной, он не будет работать вообще, потому что function suggest(index)
не может получить доступ к var test = {};
снаружи.
Здесь я застрял. Моя цель - получить доступ к var test = {};
в пределах suggest()
, чтобы получить работу каждого человека в зависимости от их name
и ID
.
Спасибо за вашу помощь
Вам нужен массив для хранения ссылок на всех людей, или, если идентификатор сотрудника уникален (что не является * в вашем примере), вы можете использовать объект вместо массива. Кроме того, при вызове функции вам не нужно 'new'. Итак: 'var employees = []; employees.push (make_test (...)); '. – nnnnnn
@Jecoms Было предложено, чтобы ОП задал другой вопрос о функции 'предлагать' http://stackoverflow.com/questions/39968429/dynamically-access-function-object-property#comment67216922_39968451 – guest271314
@nnnnnn: Это то, что я пытался сделать сначала, но тогда у них не будет двух других свойств, которые мне нужны, чтобы сопоставить их (задание и идентификатор), если я не надавливаю объекты в массиве? Сначала я хотел избежать использования массива объектов, так как итерация через массив плюс объект будет печатать несколько раз те же результаты.Возможно, я ошибаюсь, так как я все еще пытаюсь расширить свои знания в javascript. – Lau