如何将onclick事件添加到动态生成的HTML元素

布莱恩·乔(Bryan Choo)

我正在尝试开发允许用户创建新聊天室的聊天应用程序。

我已经为列表中的每个项目运行了代码,单击后会将用户添加到新房间

Javascript:

document.querySelectorAll('.select-room').forEach(li => {
    li.onclick = () => {
        let newroom = li.innerHTML;
        if (newroom == room){
            msg = `You are already in ${room} room.`
            printSysMsg(msg);
        } else {
            leaveRoom(room);
            joinRoom(newroom);
            room = newroom;
        }
    }
});

HTML:

            <nav id='sidebar'>
            <h4>ROOMS</h4>
            <ul id='room_list' >
                {% for room in rooms %}
                    <li class = 'select-room'>{{ room }}</li>
                {% endfor %}
            </ul>                
        </nav>

但是,当我添加新房间时,我无法立即单击列表项来更改聊天室,因此我必须刷新页面。

任何帮助将不胜感激

亚伦3219

您必须将事件侦听器再次添加到添加的每个元素。但是不像JakeCroth试图解释(至少在我理解正确的情况下)。相反,请尝试如下操作:

let lst = document.querySelector('.lst');
let btn = document.querySelector('.btn');

function addListItem() {
  let li = document.createElement('li');
  
  li.innerHTML = "New element";  
  li.addEventListener('click', testTheEventListener);
  lst.appendChild(li);
}

function testTheEventListener() {
  console.log("The event listener works!");
}

document.querySelectorAll('li').forEach(li => {
  li.addEventListener('click', () => {
    testTheEventListener();
  });
});
<ul class='lst'>
  <li class="listItem">First</li>
  <li class="listItem">Second</li>
  <li class="listItem">Third</li>
</ul>

<button onclick="addListItem()" class='btn'>Add item</button>

如您所见,我将事件侦听器添加到所有现有项:

document.querySelectorAll('li').forEach(li => {
  li.addEventListener('click', () => {
    testTheEventListener();
  });
});

而且,如果一个项目被动态添加,我也将事件监听器也添加到该项目。

function addListItem() {
  let li = document.createElement('li');

  li.innerHTML = "New element";  
  li.addEventListener('click', testTheEventListener); //<--
  lst.appendChild(li);
}

如果我理解您错了,请随时纠正我。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

如何将ID,值和onclick事件添加到动态生成的div

来自分类Dev

如何将事件侦听器添加到动态创建的HTML列表元素?

来自分类Dev

如何将onclick事件添加到joint.js元素?

来自分类Dev

如何将 onClick 事件处理程序添加到画布元素(弧)?

来自分类Dev

如何将 onclick 事件附加到动态创建的元素

来自分类Dev

如何将onclick事件添加到Wordpress菜单

来自分类Dev

如何将onclick动态添加到arraylist

来自分类Dev

如何将onclick动态添加到arraylist

来自分类Dev

如何使用JavaScript将onclick事件添加到元素

来自分类Dev

如何使用JavaScript动态将onclick添加到html元素

来自分类Dev

如何将事件和事件类型动态添加到Java脚本而不是jquery中的元素

来自分类Dev

将事件添加到html元素

来自分类Dev

OM如何将类添加到html元素

来自分类Dev

如何将HTML元素添加到AngularUI日历

来自分类Dev

将onclick添加到元素,但保持当前的onclick事件

来自分类Dev

将事件侦听器添加到使用Javascript从API捕获的动态生成的元素中

来自分类Dev

将事件侦听器添加到动态添加的HTML元素

来自分类Dev

将动态变量添加到onclick事件

来自分类Dev

将动态变量添加到onclick事件

来自分类Dev

使用jQuery将“ onClick”事件添加到动态div

来自分类Dev

如何将jquery ui事件处理程序动态添加到动态创建的按钮?

来自分类Dev

将数据添加到动态创建的元素并绑定事件

来自分类Dev

将鼠标事件添加到动态创建的元素Vuejs

来自分类Dev

如何将侦听器事件添加到由DefaultListModel对象添加的JList元素?

来自分类Dev

如何将侦听器事件添加到由DefaultListModel对象添加的JList元素?

来自分类Dev

将生成的Javascript事件添加到生成的HTML

来自分类Dev

如何将 Onclick 事件添加到 Shiny, R 中的 c3 图表?

来自分类Dev

如何将事件添加到通过单击按钮动态创建的PictureBox中?(C#)

来自分类Dev

如何查找包含h1的td元素,然后将onclick事件添加到td

Related 相关文章

  1. 1

    如何将ID,值和onclick事件添加到动态生成的div

  2. 2

    如何将事件侦听器添加到动态创建的HTML列表元素?

  3. 3

    如何将onclick事件添加到joint.js元素?

  4. 4

    如何将 onClick 事件处理程序添加到画布元素(弧)?

  5. 5

    如何将 onclick 事件附加到动态创建的元素

  6. 6

    如何将onclick事件添加到Wordpress菜单

  7. 7

    如何将onclick动态添加到arraylist

  8. 8

    如何将onclick动态添加到arraylist

  9. 9

    如何使用JavaScript将onclick事件添加到元素

  10. 10

    如何使用JavaScript动态将onclick添加到html元素

  11. 11

    如何将事件和事件类型动态添加到Java脚本而不是jquery中的元素

  12. 12

    将事件添加到html元素

  13. 13

    OM如何将类添加到html元素

  14. 14

    如何将HTML元素添加到AngularUI日历

  15. 15

    将onclick添加到元素,但保持当前的onclick事件

  16. 16

    将事件侦听器添加到使用Javascript从API捕获的动态生成的元素中

  17. 17

    将事件侦听器添加到动态添加的HTML元素

  18. 18

    将动态变量添加到onclick事件

  19. 19

    将动态变量添加到onclick事件

  20. 20

    使用jQuery将“ onClick”事件添加到动态div

  21. 21

    如何将jquery ui事件处理程序动态添加到动态创建的按钮?

  22. 22

    将数据添加到动态创建的元素并绑定事件

  23. 23

    将鼠标事件添加到动态创建的元素Vuejs

  24. 24

    如何将侦听器事件添加到由DefaultListModel对象添加的JList元素?

  25. 25

    如何将侦听器事件添加到由DefaultListModel对象添加的JList元素?

  26. 26

    将生成的Javascript事件添加到生成的HTML

  27. 27

    如何将 Onclick 事件添加到 Shiny, R 中的 c3 图表?

  28. 28

    如何将事件添加到通过单击按钮动态创建的PictureBox中?(C#)

  29. 29

    如何查找包含h1的td元素,然后将onclick事件添加到td

热门标签

归档