包含javascript的附加HTML不';我不能跑,我怎样才能让它跑?

包含javascript的附加HTML不';我不能跑,我怎样才能让它跑?,javascript,html,dom,dom-manipulation,Javascript,Html,Dom,Dom Manipulation,我添加了一些包含javascript的HTML <td onclick="toggleDay('+data+',this,\'tue\');">T</td> T 及 这两段代码包含在我附加的大量HTML中 如果它们在页面加载时已经存在,但在我添加时却不存在,那么它们可以正常工作 你建议我做什么?在追加或删除后,DOM是否需要某种排序请求来重新解释JavaScript 编辑: 还有一些信息,我有这个问题,因为我用AJAX向数据库添加了一些东西,一旦成功,我会在需要的

我添加了一些包含javascript的HTML

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


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

如果它们在页面加载时已经存在,但在我添加时却不存在,那么它们可以正常工作

你建议我做什么?在追加或删除后,DOM是否需要某种排序请求来重新解释JavaScript

编辑:

还有一些信息,我有这个问题,因为我用AJAX向数据库添加了一些东西,一旦成功,我会在需要的地方添加html。评论也是如此

编辑2:


即使有了所有关于它的讨论,感谢您的回答,它仍然可以工作。

将HTML附加到文档中,然后通过编程将onclick事件添加到对象中

这是我的想法,但是。。。我认为你可以这样做:

即:

FF:

您应该使用
addEventListener('click',/*…*/)
,而不是在innerHTML或其他任何内容中设置onclick

IE调用了
addEventListener
一些完全不同的东西,因此您也必须对此进行补偿


(编辑:IE称之为
attachEvent()
。希望这有点用处。)

您是否通过AJAX附加HTML?如果是这样,则必须手动评估()返回的JavaScript。您可以将响应封装在div中,并执行如下操作:

wrapper.getElementsByTagName("script")
// for script in wrapper...
eval(script.innerHTML)
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
    }
  }
});
如果您使用的是类似于库的原型,那么会简单得多,因为您可以将响应传递给evalscript()方法。

我会这样做:

wrapper.getElementsByTagName("script")
// for script in wrapper...
eval(script.innerHTML)
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
    }
  }
});
首先将id属性添加到html:

<td id="toggleDayCell">T</td>

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

使用Prototype(或jQuery)之类的东西很好,因为它考虑了跨浏览器的兼容性。

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

我刚刚在google搜索中找到了您的帖子。你解决了我的问题。我爱你,伙计。+1但它还是说应该避免eval,不是吗?是的,但是在ajax响应中没有其他方法运行javascript,至少我所知道的人没有。
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
    }
  }
});