代码之家  ›  专栏  ›  技术社区  ›  fmsf

包含javascript的附加HTML无法运行,我该如何使其运行?

  •  8
  • fmsf  · 技术社区  · 17 年前

    我正在附加一些包含javascript的HTML。

    <td onclick="toggleDay('+data+',this,\'tue\');">T</td>
    

    <img src="img/cross.png" onclick="deleteAlarm('+data+');">
    

    这两段代码在我附加的大量HTML中。

    如果它们在页面加载时已经存在,但在我追加时不存在,它们就可以正常工作。

    编辑:

    编辑2:

    5 回复  |  直到 7 年前
        1
  •  4
  •   Mark Biek    17 年前

    我会这样做:

    首先在html中添加id属性:

    <td id="toggleDayCell">T</td>
    
    <img src="img/cross.png" id="crossImg">
    

    然后,让Javascript在页面的onload事件上运行,并附加到您感兴趣的事件上。

    在……里面 PrototypeJS

    Event.observe(window, 'load', function(){
      if( $('toggleDayCell') ) {
        Event.observe( $('toggleDayCell'), 'click', function(event){
          //do stuff here
        }
      }
    
      if( $('crossImg') ) {
        Event.observe( $('crossImg'), 'click', function(event) {
           //do stuff here
        }
      }
    });
    

        2
  •  3
  •   robmerica    17 年前

    您是否通过AJAX附加HTML?如果是这样,您将不得不手动eval()返回的JavaScript。您可以将响应包装在一个div中,并执行以下操作:

    wrapper.getElementsByTagName("script")
    // for script in wrapper...
    eval(script.innerHTML)
    

    如果您使用的是类似库的原型,则会简单得多,因为您可以将响应传递给evalScripts()方法。

        3
  •  1
  •   kemiller2002    17 年前

    将HTML附加到文档中,然后以编程方式将onclick事件添加到对象中。

    这是我的头顶,但是。..我想你可以这样做:

    即:

    Object.onclick = someFuntion
    

    FF:

    Object.addEventListener('click', someFunction);
    
        4
  •  0
  •   toby toby    17 年前

    AJAX有一些怪癖。..尤其是在IE中。示例:您不能使用innerHTML属性在表元素中插入/更新任何内容(在IE中)。最好使用DOM函数来插入/更新/删除元素节点(或添加事件处理程序)。您可以使用提到的eval()函数来运行动态加载的javascript,该javascript使用DOM对象修改文档。

        5
  •  0
  •   user42092 user42092    17 年前

    应该 正在使用 addEventListener('click', /*...*/)

    addEventListener 这完全是另一回事,所以你也必须对此进行补偿。

    attachEvent() 。希望这有用。)