Javascript函数不工作后,改变html与innerHTML

Javascript functions not working after changing html with innerHTML

本文关键字:改变 html innerHTML 函数 工作 Javascript      更新时间:2023-09-26

我有一些html,在一个div内使用几个JS函数。如果我在JS和innerHTML的帮助下将该div的内容更改为其他一些html代码,也有一些JS函数,它们停止工作。如果我改回之前的html,它仍然不起作用。

这就像一旦div中的html更新,javascript就会被解除绑定到所有具有该函数的元素。

我知道我可以通过隐藏和显示图层来解决这个问题,但我宁愿不这样做。

目前我已经解决了这个问题,通过注入js文件,每次该div的html使用以下代码更改:

function inject(src, cb, target){
    target = target || document.body;
    var s = document.createElement('SCRIPT');
    s.charset = 'UTF-8';
    if(typeof cb === 'function'){ 
        s.onload = function(){
            cb(s);
        }; 
        s.onreadystatechange = function () {
            (/loaded|complete/).test(s.readyState) && cb(s);
         };                     
    }
    s.src = src;
    target.appendChild(s);
    return s;
};

每当我更新html时,它总是在html文件中加载新行,这似乎不是一个非常优雅的解决方案。

是否有一种方法,使javascript我有重新加载或保持其连接,当我改变html而不重新加载页面?

要执行js代码,你可以直接使用eval(),它会立即执行js,不管html或dom结构的变化。

http://www.w3schools.com/jsref/jsref_eval.asp