addEventListener不会将侦听器附加到元素上

问题描述 投票:1回答:1
/***************************************************** *
*  Function: renderTodos                             
*  Builds a list of todo items from an array
*  rebuilds list each time new item is added to array
****************************************************** */
function renderTodos(arr) {

  // erases all previous content
  uList.innerHTML = '';

  for ( var i = 0; i < tdArray.length; i++ ) {

    // create a link element
    var remex = document.createElement('span');
    //link element didn't work so try a button
    //var remex = document.createElement('input');
        //remex.setAttribute('type','button');
        remex.setAttribute('class', 'deletex');
        remex.innerHTML="X";
        // set attribute index and value
        remex.setAttribute('index', i);
        remex.addEventListener('click',removeTodo);
    console.dir(remex);   

        // create <li> element
    var li_element = document.createElement('li');
        li_element.style.lineHeight = "20pt";
        li_element.appendChild(remex);
        li_element.innerHTML += tdArray[i];

    // add item to list
    uList.appendChild(li_element);
    inField.value = '';
  }

} // /renderTodos

此功能根据文本字段输入构建列表。每次单击“添加项目”按钮时,事件都会调用此函数以将项目添加到列表中。一切正常,直到我尝试将eventListener添加到列表项文本之前附加到"x"元素的li上。这个想法是"x"是可单击的,并且onClick它从列表中删除了列表项。但是我已经尝试了6种方法在周日将eventListener附加到“ x”对象,但没有任何效果。我尝试将事件侦听器附加到span对象和一个button对象;我已经在函数中四​​处移动了[remex.addEventListener ...],在渲染之后,在渲染之前等等。我已经淘汰了CSS;我尝试将addEventListener更改为onClick;我已经在我们自己的Apache服务器上尝试了此代码,然后将其移至jsbin.com,以期希望某些服务器设置成为可能。在尝试过的一长串事情中,可能还有其他我不记得的事情。如您所见,我已经尝试将其作为按钮和跨度使用,因此尝试了注释代码。

简而言之,无论我做什么,eventListener都不会附加到“ x”上。有任何想法吗?您是否需要查看更多代码?

javascript dom-events event-listener
1个回答
2
投票

此行将覆盖附加的事件侦听器:

li_element.innerHTML += tdArray[i];

设置innerHTML将替换li_element中的所有原始元素。 +=只是li_element.innerHTML = li_element.innerHTML + tdArray[i];

的快捷方式

如果tdArray[i]仅包含一些文本,则可以这样添加其内容:

li_element.appendChild(document.createTextNode(tdArray[i]));

如果tdArray[i]包含元素,则可以附加一个包装器元素,然后设置包装器的innerHTML

© www.soinside.com 2019 - 2024. All rights reserved.