Javascript 如何为来自服务器的元素添加EventListener?

Javascript 如何为来自服务器的元素添加EventListener?,javascript,onload,addeventlistener,xmlhttprequest,Javascript,Onload,Addeventlistener,Xmlhttprequest,如何使用addEventListener(window.onload)添加单击事件 当问题中的标记是从 服务器(通过xmphttp请求,不少于) 谢谢 将元素插入DOM后,必须应用事件handles您可以尝试处理父元素的事件,这些事件在加载DOM时可用,然后获取与事件相关的元素 <ul id="list"> <li id="first">The first</li> <li id="second">The second</li>

如何使用addEventListener(window.onload)添加单击事件 当问题中的标记是从 服务器(通过xmphttp请求,不少于)


谢谢

将元素插入DOM后,必须应用事件handles

您可以尝试处理父元素的事件,这些事件在加载DOM时可用,然后获取与事件相关的元素

<ul id="list">
  <li id="first">The first</li>
  <li id="second">The second</li>
  <li id="third">The third</li>
</ul>

document.getElementById('list').onclick(function(e){
  o = e.originalTarget;
  // if you click on second li o will bi the same as document.getElementById('first')
  // even if li with id "first" is inserted to DOM after creating this event handler to "list"
  // so here you can perform actions with it
  // hope it will help
});
  • 第一个
  • 第二个
  • 第三个“>第三个
document.getElementById('list').onclick(函数(e){ o=e.原始目标; //如果单击第二个LIO,则bi将与document.getElementById('first')相同 //即使id为“first”的li在创建“list”的事件处理程序后插入到DOM中 //因此,您可以在这里使用它执行操作 //希望能有所帮助 });
谢谢大家

我通过将下面的代码添加到XMLHTTP请求的“on success”事件中解决了这个问题,该请求使用来自服务器的元素填充DOM。这对我很管用。 Josh,你让我的头朝着正确的方向移动(尽管看到代码说明会很好),所以我将你的回答标记为答案

if ((xmlhttp.readyState == 4) && (xmlhttp.status == 200)) {

                        var m_sel=document.getElementById("fcat");

                        if (m_sel) {

                            var maxi = m_sel.options.length;

                            for( var i = 0; i < maxi; i++ )
                            {
                                var option = m_sel.options[i];
                                    option.addEventListener( "click", toggleElem, true );

                            }                                 

                        }        
}
if((xmlhttp.readyState==4)和&(xmlhttp.status==200)){
var m_sel=document.getElementById(“fcat”);
如果(穆塞尔){
var maxi=m_sel.options.length;
对于(变量i=0;i
对不起,这不是真的。为什么需要将元素“插入DOM”才能附加事件侦听器?因为DOM首先提供事件。你在开玩笑吗?嗯,你可以在插入文档之前添加处理程序,但显然你必须在添加处理程序之前创建元素。如果您将innerHTML直接写入文档,那么创建和插入的动作是相同的;如果使用DOM方法,则情况并非如此。Josh,“DOM提供事件”与将侦听器“附加”到元素有什么关系?附加侦听器不需要将元素插入到文档中。或者,我们可能相互误解了吗?例如,通过使用
Range
及其
createcontextalfragment
将字符串转换为
DocumentFragement
。此时,DocumentFragment不需要在文档中(但字符串已转换为一个功能完整的DOM树)。然后您可以用它做任何您想做的事情,包括文档注入。但这与我最初给你的答复是毫不相干的。您说过需要将元素插入DOM,而不是HTML字符串。我纠正了您的说法,即元素不需要在文档中才能将事件侦听器附加到它们。还不清楚吗?呃,
。单击(函数…
?这就是jQuery,不是吗?
onclick
是一个属性,而不是一个函数。