pai*_*ist 1 javascript event-listener dom-events
/***************************************************** *
* 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
Run Code Online (Sandbox Code Playgroud)
该函数根据文本字段输入构建一个列表。每次单击“添加项目”按钮时,事件都会调用此函数以将项目添加到列表中。一切都工作得很好,直到我尝试将 添加到eventListener附加"x"到li列表项文本之前的元素中。这个想法是"x"可点击的,并且onClick它从列表中删除列表项条目。但到周日我已经尝试了 6 种方法将 eventListener 附加到“x”对象,但没有任何效果。我尝试将事件侦听器附加到 span 对象和按钮对象;我已经remex.addEventListener在函数中移动了“...”,在渲染之后、渲染之前等等;我已经取消了CSS;我尝试将其更改addEventListener为onClick;我已经在我们自己的 Apache 服务器上尝试过这段代码,我已将其移至 jsbin.com,希望某些服务器设置会妨碍我;在我尝试过的一长串事情中,可能还有一些我不记得的事情。如您所见,我已将其作为按钮和跨度进行了尝试,因此出现了注释代码。
简而言之,无论我尝试什么,都eventListener不会附加到“x”。有任何想法吗?您需要查看更多代码吗?
此行覆盖附加的事件侦听器:
li_element.innerHTML += tdArray[i];
Run Code Online (Sandbox Code Playgroud)
设置innerHTML替换 中的所有原始元素li_element。+=只是一个捷径li_element.innerHTML = li_element.innerHTML + tdArray[i];
如果tdArray[i]只包含一些文本,您可以像这样添加其内容:
li_element.appendChild(document.createTextNode(tdArray[i]));
Run Code Online (Sandbox Code Playgroud)
如果tdArray[i]包含元素,您可以附加一个包装元素,然后设置innerHTML包装元素。
| 归档时间: |
|
| 查看次数: |
2948 次 |
| 最近记录: |