【问题标题】:Access array from addEventListener从 addEventListener 访问数组
【发布时间】:2020-01-06 12:31:34
【问题描述】:

我在按钮点击事件中添加了addEventListener。单击按钮后,我想删除全局数组数据。

现在我无法使用this.arrayname 传递数组,我正在尝试下面的代码。它正在删除数据但不更新父数组。

请告诉我如何将参数传递给addEventListener 或如何从addEventListener 调用函数,以便我可以更新数组。 this.array = deletejson; btn.addEventListener('click', function(event) { for (var i = 0; i

    export class ExtractionConfigurationComponent implements OnInit {
    array = [];
   constructor(private adminWorkflowService:AdminWorkflowService) { }
   ngOnInit() {}
    addedkeywords(data: any){
   btn.addEventListener('click', (event) => {
  //var x = document.getElementById(this.id);
  //x.style.display='none';
  for (var i = 0; i < this.array.length; i++) {
      var cur = this.array[i];
      if (cur.keywordname == (document.getElementById("keywordname") as                HTMLTextAreaElement).value) {
          this.array.splice(i, 1);
          break;
          console.log("after deleting data" +this.array);
          console.log("after deleting data" +JSON.stringify(this.array));}}});}

【问题讨论】:

  • 请阅读问题编辑器旁边的格式问题,并使您的代码可读。更好的是,将其设为内联 live demo
  • 能否给出完整的脚本
  • 在什么情况下使用this.array?在上课吗?
  • @terry,是的,它在课堂上..

标签: javascript arrays


【解决方案1】:

假设数组存储为this.array(不清楚您在什么上下文中执行此操作),那么您需要在事件侦听器的回调中访问词法 this。这可以通过使用箭头函数来完成:

btn.addEventListener('click', (event) => {
    for (var i = 0; i < this.array.length; i++) {
        var cur = this.array[i];
        if (cur.keywordname == (document.getElementById("keywordname") as HTMLTextAreaElement).value) {
            this.array.splice(i, 1);
            break;
        }
    }
});

【讨论】:

  • 我试过上面的代码,但它不起作用,我已经更新了代码......
猜你喜欢
  • 2011-11-22
  • 1970-01-01
  • 2021-05-22
  • 1970-01-01
  • 2022-10-30
  • 1970-01-01
  • 2019-03-22
  • 2013-12-16
  • 1970-01-01
相关资源
最近更新 更多