当我使用参数触发自定义事件时,事件处理程序中的参数未定义

When I trigger custom event with parameters, parameters from event handler is undefined

我使用以下代码创建了一个自定义事件:

function DataLoader() {
  let el = document.createElement('section');

  setTimeout(function() {
    el.dispatchEvent(new CustomEvent('myevent', {
      number: 123
    }));
  }, 3000);

  return el;
}

// With code below I add my event listener.

let loader = new DataLoader();

loader.addEventListener('myevent', function(e) {
  console.log(e.number); // ← `e.number` is `undefined` when event is triggered.
});

document.body.appendChild(loader);

事件触发时,变量e.numberundefined。我做错了什么?我没有使用 JQuery。 See this codepen

当您创建对象 new DataLoader() 并声明 let el 时,el 始终未定义。

所以你必须给它赋值。 你必须这样做

function DataLoader(elem) {
    let el = elem;

    //When data is loaded {
        el.dispatchEvent(new CustomEvent('myevent', { number: 123 }));
    //}

    return el;
}

然后像

一样创建对象
loader = new DataLoader(document.body);

更多信息CustomEvent MDN

您的代码不清楚。根据您的要求做这样的事情。

var obj = document.createElement('section')
obj.addEventListener("cat", function(e) { console.log(e.detail)});

// create and dispatch the event
var event = new CustomEvent("cat", {
  detail: {
    hazcheeseburger: true
  }
});
obj.dispatchEvent(event);

使用键名 "detail".

发送对象内的参数
el.dispatchEvent(new CustomEvent('myevent', { detail :{number: 123} }));

参考 - https://javascript.info/dispatch-events