在不太详细地解释我正在处理的项目细节的情况下,我试图确定一种方式,可以在访问document.getElementById().value
时实现一个事件侦听器,或者以类似于对象的方式重写它,并为获取和设置该值定义自定义行为.这可能吗?
我试过以下方法,但没有成功:
Object.defineProperty(document.getElementById, 'nodeValue', {
get: function () {
console.log('document.getElementById value accessed');
return this.nodeValue;
},
set: function (value) {
console.log('document.getElementById value set');
this.nodeValue = value;
}
});
与上面相同,但用value
代替nodeValue
:
Object.defineProperty(document.getElementById, 'value', {
get: function () {
console.log('document.getElementById value accessed');
return this.value;
},
set: function (value) {
console.log('document.getElementById value set');
this.value = value;
}
});
抱歉如果这看起来有点牵强,那么JavaScript背后的复杂性我并不太熟悉.然而,上面的代码说明了我想要实现的目标.我只是不知道怎么做!
我花了一些时间研究MDN,试图了解它是如何工作的,从我收集到的信息来看,getElementById()返回一个元素,该元素继承自包含nodeValue的 node 接口,我认为这个nodeValue是我感兴趣的,但我不能确定.
编辑:我希望这种行为是通用的,我有不止一个(但数量未知)元素,所以我不试图将其应用于特定元素.