包含javascript的附加HTML不';我不能跑,我怎样才能让它跑?
我添加了一些包含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向数据库添加了一些东西,一旦成功,我会在需要的
<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
}
}
});