Javascript Typescript:循环外部的访问变量

Javascript Typescript:循环外部的访问变量,javascript,angular,typescript,frontend,Javascript,Angular,Typescript,Frontend,我已经创建了一个数组,希望访问循环外部创建的元素。我知道它们不在范围内,因此写这篇文章。前面的文章也不会让它们被访问 colIdx = colIdx + this.columns.findIndex(c => c.editable); this.focusInput(rowIdx, colIdx); this.autocompletes.toArray().forEach(el => { console.log(el); }) 我有一个表格,有很多输入字段,有一个自动完成功能

我已经创建了一个数组,希望访问循环外部创建的元素。我知道它们不在范围内,因此写这篇文章。前面的文章也不会让它们被访问

colIdx = colIdx + this.columns.findIndex(c => c.editable);
this.focusInput(rowIdx, colIdx);
this.autocompletes.toArray().forEach(el => {
   console.log(el);
})
我有一个表格,有很多输入字段,有一个自动完成功能和一个建议面板。我还有一个自定义方法,它允许用户使用enter键进行制表。然而,一开始,用enter键点击并没有关闭自动完成的建议面板,因此过了一段时间,所有的建议面板都打开了

这就是我创建上述方法的原因。实际上,您可以忽略前两行,因为使用enter进行制表时需要它们

这个.autocompletes是一个包含所有输入元素的查询列表。我将它们转换成一个数组,并调用每个元素el。 通过这种方式,我可以在el上调用closePanel()方法,以关闭自动完成方法的建议面板。但是,这样做会关闭所有el元素的建议面板。这就是为什么我需要用户设置焦点的el索引并关闭此索引


为此,我必须在创建它的for循环外部访问el。

您可以在循环外部初始化空数组,如
var-arr:type=emptyArr[]然后从循环内部推送数据(el)


要推送,请从循环内部执行如下操作:
arr.push(el)
,然后在循环外部访问它

最简单的方法是将其分配给循环范围之外的数组:

元素:任意[]=[];
colIdx=colIdx+this.columns.findIndex(c=>c.editable);
这是聚焦输入(rowIdx,colIdx);
this.autocompletes.toArray().forEach(el=>{
控制台日志(el);
这个。元素。推(el);
});
//现在,您可以循环使用'this.elements',并对其执行所需操作。
this.autocompletes是一个包含所有输入元素的查询列表

这意味着自动完成不会更改,您可以将其保存在Init调用中的局部变量中

例:如果您的表单有4个输入,除非您将其从dom中删除,否则它仍将包含4个输入。在创建/初始化期间将其保存在局部变量中。这取决于您编写代码的方式

这是你能做的

//do not do .toArray again and again its just not usefull as your data is constant
elements: Array<any> = this.autocompletes.toArray();

...

elements.forEach(el => {
   //work on elements here
   //to check focus on el you could do something like this el.is(":focus")
});
//不要这样做。一次又一次地排列是没有用的,因为您的数据是常量
元素:Array=this.autocompletes.toArray();
...
elements.forEach(el=>{
//在这里处理元素
//要检查el上的焦点,可以执行类似el.is(“焦点”)的操作
});

你到底想要什么?不清楚。你想做什么?对不起,我会尽快编辑信息。你为什么需要
el
外部,你的意思是说,对于过滤,你可以
查找
。过滤
。一些
可能的重复项只会推送元素数组中的所有el,从而导致重复甚至错误的值不确定为什么会得到“错误”的值。重复,是的,但这基本上是问题的要求。我不太清楚他们为什么要循环,然后在外部处理一些事情,但是如果没有这个上下文,你就不能给出更好的答案。错误的值,比如如果某个值从自动完成中删除,但它仍然存在于元素中。是的,这取决于他在做什么,但这仍然会导致错误和重复的值。