Javascript:检查元素是否已更改

标签 javascript element onchange

我想知道,如果可能的话,如何在 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/

相关文章:

javascript - 将对象数组分配给基于接口(interface)的数组

javascript - 如何在node.js中逐行运行代码

java - 如何将数组中的元素放置在给定位置?

element - 如何限制 CQ5 中多字段中的元素数量?

javascript - 如何使用onchange根据选择的值显示不同的信息?

javascript - 如何在 <input type ="text"> 字段上使用 onFocus、onChange 和 onClick 事件

javascript - 为什么我的函数调用应该由 setTimeout 调度立即执行?

javascript - 将MQTT主题和数据添加到chartjs

php - 如何获取 php/laravel 数组中元素的位置

javascript - React.js 使用 javascript 更改输入值