Javascript:检查元素是否已更改

Ada*_*dam 8 javascript element onchange

我想知道,如果可能,如果元素已更改或其属性,如何检入javascript?

我的意思是像window.onhashchange元素之类的东西:

document.getElementById("element").onElementChange = function();
Run Code Online (Sandbox Code Playgroud)

我知道onchange是这样的,但是如果我想以这种方式知道它会起作用:

var element = {};
element.attribute = result;

element.attribute.onchange = function();
Run Code Online (Sandbox Code Playgroud)

Jan*_*Jan 8

据我所知你想要onChange javascript对象属性.答案是否定的,据我所知,它并不存在.

但你可以像这样制作一个setter函数(作为概念证明):

var element = {};

element.setProperty = function(property, value) {
  if (typeof(element.onChange) === 'function') {
    element.onChange(property, element[property], value);
  }

  element[property] = value;
};



element.onChange = function(property, oldValue, newValue) {
  alert(property + ' changed from ' + oldValue + ' to ' + newValue);
};

element.setProperty('something', 'Hello world!');
Run Code Online (Sandbox Code Playgroud)

现在你得到一个警告框,里面有'从undefined改为Hello World!'.而(element.something === 'Hello World!')将返回true.

如果你现在打电话:

element.setProperty('something', 'Goodbye world!');
Run Code Online (Sandbox Code Playgroud)

你会得到一个警告框,其中包含'Hello World!再见世界!'

当然setProperty,如果要捕获此事件,则必须通过所有代码中的方法设置属性!

编辑:

在将来的某个时间,您可以使用Object.observe().

编辑2:

现在还有代理.


luc*_*san 5

您可能会考虑突变观察者。

为此,您首先创建一个回调(当 dom 元素更改时触发)

将其分配给观察者var observer = new MutationObserver(callback);

然后告诉观察者看什么observer.observe('<div></div>', observerOptions);

来自: Mozilla 突变观察者页面

  • 这是最新且相关的答案 - 您可以添加一些简单的代码以使其更加明显 https://jsfiddle.net/wg4ahtf6/ (2认同)