gpt4 book ai didi

javascript - 在另一个函数中访问局部变量而不使用全局变量

转载 作者:行者123 更新时间:2023-11-28 18:20:38 25 4
gpt4 key购买 nike

我需要将多个textarea的值与对象的属性相匹配。仅当满足以下条件时才应匹配:

  1. 所使用的textarea的值等于对象中包含的人名
  2. 如果文本区域的索引等于人员的 ID。 (比照我的 fiddle 中的 bool 值: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 = {};,根据每个人的 nameID 获取他们的工作

感谢您的帮助

最佳答案

鉴于您的员工 ID 似乎并不唯一,我建议您将所有人员存储在一个数组中,然后在您的 suggest() 函数中您可以搜索该数组以查找检查是否匹配(点击运行代码片段来尝试一下):

function make_test(name, job, ID) {
var test = {};
test.name = name;
test.job = job;
test.ID = ID;
return test;
}

var people = [];

people.push(make_test("Paul", "manager", 1));
people.push(make_test("John", "employee", 2));
people.push(make_test("Jan", "employee", 2));

function suggest(index) {
var thisInput = document.getElementById("textarea" + index);
var thisOutput = document.getElementById("output" + index);

thisOutput.innerHTML = "Has job:";

for (var i = 0; i < people.length; i++) {
if (people[i].ID === index && people[i].name == thisInput.value) {
thisOutput.innerHTML = "Has job: " + people[i].job; //should access 'test' properties : test.name, test.job, test.ID
break;
}
}
}
<table>
<tr>
<td><textarea onkeyup="suggest(1)" name="response" id="textarea1" cols="30" rows="5"></textarea></td>
<td><div id="output1">Has job :</div></td>
</tr>
<tr>
<td><textarea onkeyup="suggest(2)" name="response" id="textarea2" cols="30" rows="5"></textarea></td>
<td><div id="output2">Has job :</div></td>
</tr>
</table>

请注意,使用 new 调用 make_test() 函数是没有意义的,因为您在函数内手动创建了一个新对象。

关于javascript - 在另一个函数中访问局部变量而不使用全局变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39969090/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com