Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/447.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何调用嵌套在forEach循环中的Javascript函数_Javascript_Html_Function_Foreach - Fatal编程技术网

如何调用嵌套在forEach循环中的Javascript函数

如何调用嵌套在forEach循环中的Javascript函数,javascript,html,function,foreach,Javascript,Html,Function,Foreach,我正在尝试修改一个插件来添加可用的输入标签 我在下面写了一个简化版。pluggin在页面中搜索带有“tags input”类的任何HTML,并为找到的每个HTML创建一组函数来添加和删除标记。 每当检测到keydown事件时,pluggin就会触发addTag()函数 [].forEach.call(document.getElementsByClassName('tags-input'), function (el) { function addTag(str){ //code h

我正在尝试修改一个插件来添加可用的输入标签

我在下面写了一个简化版。pluggin在页面中搜索带有“tags input”类的任何HTML,并为找到的每个HTML创建一组函数来添加和删除标记。 每当检测到keydown事件时,pluggin就会触发addTag()函数

[].forEach.call(document.getElementsByClassName('tags-input'), function (el) {
  function addTag(str){
    //code here adds a tag with a certain string "str"
  }
});

addTag("some string"); //function not found!
我希望在选择实时搜索中的链接时,能够从forEach循环外部调用addTag()函数

但是,我已经尝试在循环中添加侦听器,因为live search中的链接是在页面加载后从数据库生成的,侦听器似乎不会拾取这些链接

如何从live search调用addTag()函数

类似的问题无助于解决这一具体问题:

-没有回答


-据我所知,这是不同的问题,不是吗

我理解您的意图:但为了简单起见,我使用了字符串值列表来表示另一种可能的方法:

//为什么不创建一个对应于每个列表项的函数列表?
var dosomethingfunlist=[];
[“是”、“否”、“可能”]。forEach(功能(项目){
//假设我们将为必须在循环外部调用的每个列表项创建一个函数
dosomethingfunlist.push(
() => {
警惕(“做某事”);
}
);
});
//我们在for循环中定义的函数现在可以通过索引开头定义的函数列表从forEach循环外部调用

dosomethingfunlist[0]()类似这样的东西,不是吗

我理解您的意图:但为了简单起见,我使用了字符串值列表来表示另一种可能的方法:

//为什么不创建一个对应于每个列表项的函数列表?
var dosomethingfunlist=[];
[“是”、“否”、“可能”]。forEach(功能(项目){
//假设我们将为必须在循环外部调用的每个列表项创建一个函数
dosomethingfunlist.push(
() => {
警惕(“做某事”);
}
);
});
//我们在for循环中定义的函数现在可以通过索引开头定义的函数列表从forEach循环外部调用

dosomethingfunlist[0]()不是100%的目标。那么,你想创建一个可以触发的函数列表吗?如果不修改插件的代码,你就无法做到这一点。我看到其中一些函数对它们外部的变量有副作用,但对
forEach
回调有局部影响。你不能调用这些函数,除非你修改插件代码,并将这些函数公开给外部作用域。我不能100%确定最终目标是什么。不可能创建具有相同名称的多个全局函数并调用一次。所以你要做的就是把它们推到某个数组上,然后在上面循环。但这与再次运行循环并调用代码没有什么不同。因此,也许您可以实际解释您试图解决的问题。一种可能且显而易见的方法是将这些函数存储在forEach作用域之外的变量中。如果不修改原始代码,就不可能从循环外部调用addTag函数。你不能将“标签输入”类也添加到你的“实时搜索”元素中吗?这不是100%的目标。那么,你想创建一个可以触发的函数列表吗?如果不修改插件的代码,你就无法做到这一点。我看到其中一些函数对它们外部的变量有副作用,但对
forEach
回调有局部影响。你不能调用这些函数,除非你修改插件代码,并将这些函数公开给外部作用域。我不能100%确定最终目标是什么。不可能创建具有相同名称的多个全局函数并调用一次。所以你要做的就是把它们推到某个数组上,然后在上面循环。但这与再次运行循环并调用代码没有什么不同。因此,也许您可以实际解释您试图解决的问题。一种可能且显而易见的方法是将这些函数存储在forEach作用域之外的变量中。如果不修改原始代码,就不可能从循环外部调用addTag函数。你不能将“标签输入”类也添加到“实时搜索”元素中吗?我很高兴能帮助Richard.:)我很高兴能帮助理查德。:)