【发布时间】:2020-02-14 20:49:18
【问题描述】:
我正在尝试修改一个用于添加输入标签的插件,该插件可用here
我在下面写了我的问题的简化版本。该插件在页面中搜索任何带有“tags-input”类的 HTML,并为每个找到的添加和删除标签的函数创建一堆函数。 只要检测到 keydown 事件,插件就会触发 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!
我希望在选择Live Search的链接时,能够从Foreach循环中调用AddTag()函数。
但是,我尝试在循环中添加侦听器,因为来自实时搜索的链接是在页面加载后从数据库生成的,侦听器似乎没有拾取它们。
如何从我的实时搜索中调用 addTag() 函数?
类似的问题对这个特定问题没有帮助:
Call javascript inside foreach loop - 没有给出答案
call javascript function outside foreach loop - 据我所知不同的问题
【问题讨论】:
-
不是 100% 它的目标是什么。所以你想创建一个可以触发的函数列表?
-
在不修改插件代码的情况下是无法做到这一点的。我看到其中一些函数对它们之外的变量有副作用,但对于
forEach回调是局部的。您不能调用这些函数,除非您修改该插件代码,并将这些函数公开给外部范围。 -
我不是 100% 确定最终目标是什么。不可能创建多个具有相同名称的全局函数并调用一次。因此,您要做的就是将它们推送到某个数组并循环遍历它。但这与再次运行循环并调用代码没有什么不同。因此,也许您实际上可以解释您要解决的问题。
-
一种可能且显而易见的方法是将这些函数存储在 forEach 范围之外的变量中。
-
在不修改原代码的情况下,无法从循环外调用addTag函数。是否也不能将“tags-input”类添加到“实时搜索”元素中?
标签: javascript html function foreach