【问题标题】:Getting the element id of a click event with dynamic content获取带有动态内容的点击事件的元素 id
【发布时间】:2020-04-17 15:04:12
【问题描述】:

学习 JS,我目前的项目是创建一个收件箱(遵循 CS50 Web 应用程序课程)。这是一个单页应用程序,如下所示:

这些电子邮件是在我撰写它们并将它们发送到 mike@mike.com 时动态生成的。

这是我编写的用于在嵌套 div 中获取动态内容的代码。

// Get emails for inbox
  if (mailbox === 'inbox') {
    fetch('/emails/inbox')
      .then(response => response.json())
      .then(emails => {
        console.log(emails);

        let inbox_container = document.createElement('div');

        inbox_container.setAttribute("id", "inbox-container");

        document.querySelector('#emails-view').append(inbox_container);

        for (let i = 0; i < emails.length; i++) {

          let email_id = i;

          let email_header = document.createElement('div');
          email_header.setAttribute("class", "email-header")
          email_header.setAttribute("id", email_id);
          email_header.addEventListener('click', function(event) {
            console.log(event);
          });

          let sender = document.createElement('div');
          sender.setAttribute("class", "email-header-sender");
          sender.appendChild(document.createTextNode(emails[i].sender));

          let subject = document.createElement('div');
          subject.setAttribute("class", "email-header-subject");
          subject.appendChild(document.createTextNode(emails[i].subject));

          let timestamp = document.createElement('div');
          timestamp.setAttribute("class", "email-header-timestamp");
          timestamp.appendChild(document.createTextNode(emails[i].timestamp));

          email_header.appendChild(sender);
          email_header.appendChild(subject);
          email_header.appendChild(timestamp);

          document.querySelector("#inbox-container").append(email_header);
        }
      });
  }

我要做的是在创建每个电子邮件标题 div 时为它们添加一个点击侦听器,因此我为它们分配了一个唯一的 ID,它只是一个以 0 开头的数字。

但是,我一直试图在我的点击事件中获取此 ID。在事件的控制台日志中,我找不到这个 ID,而且信息过多。这使我认为必须有更好的方法来实现这一点。

有什么想法吗?

【问题讨论】:

标签: javascript onclick event-handling dom-events


【解决方案1】:

您可以轻松获取每个新元素的id 属性,例如:

 email_header.addEventListener('click', function(event) {
     console.log( event.target.id );
 });

或者喜欢,

 email_header.addEventListener('click', function(event) {
     console.log( this.id );
 });

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2012-06-24
    • 1970-01-01
    • 1970-01-01
    • 2020-06-28
    • 2017-01-18
    • 2014-09-04
    • 2016-06-30
    相关资源
    最近更新 更多