如何调用嵌套在forEach循环中的Javascript函数
我正在尝试修改一个插件来添加可用的输入标签 我在下面写了一个简化版。pluggin在页面中搜索带有“tags input”类的任何HTML,并为找到的每个HTML创建一组函数来添加和删除标记。 每当检测到keydown事件时,pluggin就会触发addTag()函数如何调用嵌套在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
[].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.:)我很高兴能帮助理查德。:)