我想知道,如果可能的话,如何在 javascript 中检查元素或其属性是否已更改?
我的意思是像 window.onhashchange
这样的元素:
document.getElementById("element").onElementChange = function();
据我所知,onchange
是这样的,但如果我想以这种方式知道它会起作用吗:
var element = {};
element.attribute = result;
element.attribute.onchange = function();
最佳答案
据我了解,您希望对 javascript 对象属性进行 onChange。答案是否定的,据我所知不存在。
但是你可以像这样创建一个 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!');
现在您会看到一个警告框,其中显示“某些内容从未定义更改为 Hello World!”。 (element.something === 'Hello World!')
将返回 true
。
如果你现在调用:
element.setProperty('something', 'Goodbye world!');
您会收到一个警告框,其中显示“Hello World 发生了一些变化!再见世界!”。
当然,如果您想捕获此事件,您必须仅通过所有代码中的 setProperty
方法设置该属性!
编辑:
在未来的某个时候,您也许可以使用 Object.observe() .
编辑 2:
现在还有proxies .
关于Javascript:检查元素是否已更改,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4292625/