Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/435.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript:使用自定义参数声明自定义事件_Javascript - Fatal编程技术网

Javascript:使用自定义参数声明自定义事件

Javascript:使用自定义参数声明自定义事件,javascript,Javascript,我正在编写一个Javascript Web应用程序,我想在按下控制器按钮时发送一个自定义事件。该事件应具有自定义参数:event.index、event.player2和event.button。但是,它们都没有在结果事件中定义。这就是我迄今为止所尝试的: 我首先宣布这一事件如下: var testEvent = new Event('controllerPress', { index: 0, player2: false, button: 12 }); 在这不起作用之后,我在网上

我正在编写一个Javascript Web应用程序,我想在按下控制器按钮时发送一个自定义事件。该事件应具有自定义参数:event.index、event.player2和event.button。但是,它们都没有在结果事件中定义。这就是我迄今为止所尝试的:

我首先宣布这一事件如下:

var testEvent = new Event('controllerPress', {
  index: 0,
  player2: false,
  button: 12
});
在这不起作用之后,我在网上查阅了一些Q&A(如),并重新宣布了该活动

var testEvent = new Event('controllerPress', {
  detail: {
    index: 0,
    player2: false,
    button: 12
  }
});
…但没有用。我再次查看并将声明更改为使用
CustomEvent

var testEvent = new CustomEvent('controllerPress', {
  detail: {
    index: 0,
    player2: false,
    button: 12
  }
});
…但是
testEvent.index
仍然未定义。我错过了什么


编辑:这不是的副本,因为它询问如何创建自定义事件,但询问如何向该自定义事件添加自定义属性。

显然,没有办法做到这一点。JS提供的最佳解决方案是:

var event = new CustomEvent('PutYourEventNameHere', {
  detail: { // filled with sample values
    index: 0,
    player2: false,
    button: 1
  }
});
但这不会像您预期的那样设置属性

event.index
>>> undefined
event.player2
>>> undefined
event.button
>>> undefined
使用CustomEvent所能做的就是设置参数
detail
,从而产生这种行为:

event.detail.index
>>> 0
event.detail.player2
>>> false
event.detail.button
>>> 1

结论:如果要创建自定义事件,则只能定义
详细信息
。但您可以将
详细信息
定义为
对象
,以添加多个自定义属性。这很难看,但这正是我们所拥有的。

显然,没有办法做到这一点。JS提供的最佳解决方案是:

var event = new CustomEvent('PutYourEventNameHere', {
  detail: { // filled with sample values
    index: 0,
    player2: false,
    button: 1
  }
});
但这不会像您预期的那样设置属性

event.index
>>> undefined
event.player2
>>> undefined
event.button
>>> undefined
使用CustomEvent所能做的就是设置参数
detail
,从而产生这种行为:

event.detail.index
>>> 0
event.detail.player2
>>> false
event.detail.button
>>> 1

结论:如果要创建自定义事件,则只能定义
详细信息
。但您可以将
详细信息
定义为
对象
,以添加多个自定义属性。它很难看,但这正是我们所拥有的。

您需要从事件的
详细信息
属性访问它,例如内部事件回调
eventVariable.detail.index
可能重复@GoodSamaritan No,因为它询问如何创建事件,而这会询问如何向该自定义事件添加自定义属性。您需要从该事件的
detail
属性访问它,例如内部事件回调
eventVariable.detail.index
可能重复的@GoodSamaritan No,因为这会询问如何创建事件,而这将询问如何向该自定义事件添加自定义属性。