javascript - 当元素的 innerHTML 改变时触发一个函数?

标签 javascript html function innerhtml addeventlistener

我想在 div 元素的 innerHTML 发生变化时触发一个函数。

已使用 element.addEventListener('DOMCharacterDataModified', myFunction()); 进行测试,但它似乎无法正常工作。它在页面加载时触发一次但之后再也不会触发?请参阅下面的示例代码。

有人能解决我的任务吗?非常感谢任何帮助!

任务:

  1. 我有一个空的 div
  2. 它会随机输入来自外部来源(我无法控制)的数据。
  3. 每当 innerHTML 发生变化时,我都想触发 myFunction()

我当前的示例代码:

var element = document.getElementById('div');

element.addEventListener('DOMCharacterDataModified', myFunction());

function myFunction() {
    console.log(element.innerHTML);
}

setTimeout(function(){
    element.innerHTML = 'Hello World!';
}, 1000);

setTimeout(function(){
    element.innerHTML = 'Hello Space!';
}, 2000);

setTimeout 可视化从外部源馈送的数据。

如果可能,它只需要是 JS,但如果真的需要,可以使用 jQuery。


提前致谢!

//电线

最佳答案

使用 DOMSubtreeModified 事件:

var element = document.getElementById('div');

element.addEventListener('DOMSubtreeModified', myFunction);

function myFunction(e) {
    console.log(element.innerHTML);
}

setTimeout(function(){
    element.innerHTML = 'Hello World!';
}, 1000);

setTimeout(function(){
    element.innerHTML = 'Hello Space!';
}, 2000);
<div id="div"></div>

顺便说一句,DOM 突变事件是 deprecated .使用 MutationObserver :

window.addEventListener('load', function () {
  var element = document.getElementById('div');

  var MutationObserver = window.MutationObserver || window.WebKitMutationObserver || window.MozMutationObserver;
  var observer = new MutationObserver(myFunction);
  observer.observe(element, {
	  childList: true
  });

  function myFunction() {
    console.log(element);
    console.log(element.innerHTML);
  }

  setTimeout(function(){
    element.innerHTML = 'Hello World!';
  }, 1000);

  setTimeout(function(){
    element.innerHTML = 'Hello Space!';
  }, 2000);
});
<div id="div">

Raw snippet on GitHub

关于javascript - 当元素的 innerHTML 改变时触发一个函数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47378194/

相关文章:

javascript - 根据其前一个同级的子元素选择元素

javascript - karma 测试 : the synthetic property @transitionMessages. 请在您的申请中包含 "BrowserAnimationsModule"或 "NoopAnimationsModule"

html - 如何删除 Bootstrap3 容器的背景?

javascript - 传递 JavaScript 值

javascript - 表单提交前调用函数

javascript - 使用变量值创建具有属性的输入字段

javascript - 如何捕获 Javascript 弹出窗口的未知原因?

html - 如何在数字输入中获得自动点?

jquery - 自动从文本框发送输入数据

javascript - 这些原型(prototype)声明中哪个更好,为什么?