Javascript 将元素添加到文档中时发生的事件
将新html字符串添加到页面中:Javascript 将元素添加到文档中时发生的事件,javascript,Javascript,将新html字符串添加到页面中: document.getElementById('container').innerHTML = '<div id="child"></div>'; 但它似乎不起作用 更新: 或许,我应该提供更多有关情况的细节。我有一个图书馆功能 myLibrary.getHtml() 在旧版本中,用户只需调用此函数并将结果追加到文档中: document.getElementById('container').innerHTML = myLibra
document.getElementById('container').innerHTML = '<div id="child"></div>';
但它似乎不起作用
更新:
或许,我应该提供更多有关情况的细节。我有一个图书馆功能
myLibrary.getHtml()
在旧版本中,用户只需调用此函数并将结果追加到文档中:
document.getElementById('container').innerHTML = myLibrary.getHtml();
在新版本中,结果不是简单的html。现在,用户可以在将其附加到文档中后与之交互。因此,在他们将html附加到文档中之后,我需要遍历结果DOM并附加事件处理程序,隐藏一些元素和其他内容。这就是为什么,我需要知道他们何时将其添加到文档中并执行javascript函数,该函数将普通html转换为奇特的交互式小部件。如果我没有误解这个问题,您可能可以实现这一点
document.getElementById('id').childNodes;
如果我没有误解这个问题,你也许可以让它起作用
document.getElementById('id').childNodes;
您可以尝试使用,但它们在不同浏览器中的实现仍不一致。您可以尝试使用,但它们在不同浏览器中的实现仍不一致。如果您可以使用jQuery,您可以编写自己的自定义事件,该事件将在添加新html时调用您需要调用的函数:
$('#container').bind('changeHtml', function(e) {
// Execute the function you need
});
当然,不只是将html添加到元素中,您需要将其封装在一个触发自定义事件的函数中。然后您需要做的就是调用这个函数,而不是自己设置innerHtml
function addHtml(html) {
$('#container').innerHTML = html;
$('#container').trigger('changeHtml');
}
如果可以使用jQuery,则可以编写自己的自定义事件,该事件将在添加新html时调用需要调用的函数:
$('#container').bind('changeHtml', function(e) {
// Execute the function you need
});
当然,不只是将html添加到元素中,您需要将其封装在一个触发自定义事件的函数中。然后您需要做的就是调用这个函数,而不是自己设置innerHtml
function addHtml(html) {
$('#container').innerHTML = html;
$('#container').trigger('changeHtml');
}
我自己这样解决:
myLibrary.getHtml = function() {
var html;
...
var funcName = 'initWidget' + ((Math.random() * 100000) | 0);
var self = this;
window[funcName] = function() { self._initWidget(); };
return html + '<img src="fake-proto://img" onerror="' + funcName + '()"';
}
myLibrary.getHtml=function(){
var-html;
...
var funcName='initWidget'+((Math.random()*100000)0);
var self=这个;
窗口[funcName]=函数(){self.\u initWidget();};
返回html+'
代码背后的想法是,我为img
标记的src
属性指定了不正确的url,图像触发错误事件并调用我的函数。非常简单:)由我自己这样解决:
myLibrary.getHtml = function() {
var html;
...
var funcName = 'initWidget' + ((Math.random() * 100000) | 0);
var self = this;
window[funcName] = function() { self._initWidget(); };
return html + '<img src="fake-proto://img" onerror="' + funcName + '()"';
}
myLibrary.getHtml=function(){
var-html;
...
var funcName='initWidget'+((Math.random()*100000)0);
var self=这个;
窗口[funcName]=函数(){self.\u initWidget();};
返回html+'
代码背后的想法是,我为img
标记的src
属性指定了不正确的url,图像触发错误事件并调用我的函数。非常简单:)设置innerHTML后,你不能自己立即调用函数吗?不,代码是一个库,用户调用库函数并追加通过innerHTML属性生成结果。我无法更改用户与库交互的方式。设置innerHTML后,您是否可以立即自己调用函数?不,代码是库,用户通过innerHTML属性调用库函数并追加结果。我无法更改用户与库交互的方式。哦-抱歉,请阅读你的评论…如果你不能改变人们附加html的方式,那么这显然不起作用…哦-对不起,请阅读你的评论…如果你不能改变人们附加html的方式,那么这显然不起作用。。。