在另一个事件侦听器中添加一个事件侦听器,并等待dom完全加载

时间:2019-05-23 07:51:53

标签: javascript reactjs dom

我有一个带有地图标记的类,当单击该标记时,将打开一个弹出窗口,其中包含一个按钮(上面写着“ reserve”)。

我知道我可以使用

document.addEventListener("DOMContentLoaded", function(event) {
        console.log("document loaded");
      });

但是问题是从不调用控制台日志。当我尝试将事件监听器添加到按钮时,例如:

marker.addListener("click", () => {
      this.reserveButton = document.getElementById("reserve");
      this.reserveButton.addEventListener("click", this.reserveFunction);
}

我收到一个错误,TypeError: Cannot read property 'addEventListener' of null。这是有道理的,因为脚本是在html加载之前执行的。确保html首先加载的最佳方法是什么?

编辑:根据讨论: 组件代码: 称这是模态

openReserveModal: (order, vendor) => dispatch(openModal({ type: 'reserve', order: order, vendor: vendor }))
然后在标记管理器的构造函数中使用

开放保留模式

    this.MarkerManager = new MarkerManager(
      this.map,
      this.props.openReserveModal
    );

标记管理器,用于处理标记的数据(单击该标记可打开弹出窗口)

  constructor(map, modal) {
    this.map = map;
    this.modal = modal;
    this.markers = {};
    this.openWindow = null;
    this.highlight = null;
    this.reserveButton = null;
    this.reserveFunction = null;

保留div:

<div id="map-reserve" class="info-win-name info-win-reserve">
 RESERVE
</div >

保留功能:

      this.reserveFunction = () => {
        this.modal(order, vendor);
      };

0 个答案:

没有答案