Я не могу полностью понять, как Object.defineProperty
работает с элементами dom. На обычном JavaScript объекты это работает как шармObject.defineProperty: сеттеры для свойств элементов dom
var obj={name: 'john'};
Object.defineProperty(obj, 'name', {
get: function(){
console.log('get value')
},
set:function(newValue){
console.log('set value '+newValue);
},
configurable: true
});
линии
obj.name='Tom';
будет печатать на консоли «установить значение» Том и изменить obj.name Тома.
Когда я пытаюсь его на йот элемента (например, на свойстве проверенного в флажком), он будет печатать новое значение в консоли, но не изменит значение свойства:
var box = document.getElementById('checkBox1');
Object.defineProperty(box, 'checked', {
set: function (newValue) {
console.log('set value '+newValue)
},
configurable: true
});
при нажатии на флажок снят флажок «Установленное значение». Но ничего не меняется на экране, ни в поле объекта. Установитель флажка просто перестает работать. Например, если я отключил его.
Где я ошибаюсь?
Спасибо, так есть способ (событие?), Чтобы посмотреть изменение свойства объекта в js? –
@GiovanniVenturelli: то, что вы делаете, работает для большинства объектов (хотя вам нужно также предоставить 'get', если вы хотите, чтобы свойство было читаемым, и вы должны его где-то хранить (где-то, кроме объекта)), просто а не элементы DOM. Единственный способ, с помощью которого я могу справиться с проверенным состоянием флажков, это события «change» и «click», а также опрос. –
Еще раз спасибо, думаю, я поеду с ним. –