gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-11-28 17:57:06 24 4
gpt4 key购买 nike

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

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.number未定义。我做错了什么?我没有使用 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);

关于javascript - 当我使用参数触发自定义事件时,事件处理程序的参数未定义,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44241909/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com