当我使用参数触发自定义事件时,事件处理程序中的参数未定义
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.number
为undefined
。我做错了什么?我没有使用 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} }));
我使用以下代码创建了一个自定义事件:
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
为undefined
。我做错了什么?我没有使用 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} }));