获取 input.value 错误的设置描述符
get set descriptors for input.value error
var inp = document.querySelector('input');
Object.defineProperty(inp, "value", {
get: function() {
console.log('getter');
return this.value;
},
set: function(value) {
console.log('setter');
this.value = value + '1';
}
});
我想用设置的输入值编写我的逻辑,但是当我尝试获取或设置值时,这段代码不起作用,无限循环;
我如何根据更改值执行自定义处理程序?
(我需要改变值,这样:input.value="custom",没有input.setValue("custom")!)
你可以这样做:
var inp = document.querySelector('input');
function createGetSetValue( inputElement ){
var value = inputElement.value;
Object.defineProperty( inputElement, "value", {
get: function(){ return value; },
set: function( v ){ value = v + '1'; }
});
return inputElement;
};
createGetSetValue( inp );
inp.value = 10;
console.log( inp.value ) // Logs 101
<input value="2" />
因为当您使用 this.value = x
时,您正在再次调用 setter (导致无限循环)。这将独立存储值并将 getter 和 setter 设置为 return that 值而不是实际存储在输入中的值,允许您无需再次调用 getter 和 setter 即可对其进行修改。
var inp = document.querySelector('input');
Object.defineProperty(inp, "value", {
get: function() {
console.log('getter');
return this.value;
},
set: function(value) {
console.log('setter');
this.value = value + '1';
}
});
我想用设置的输入值编写我的逻辑,但是当我尝试获取或设置值时,这段代码不起作用,无限循环;
我如何根据更改值执行自定义处理程序? (我需要改变值,这样:input.value="custom",没有input.setValue("custom")!)
你可以这样做:
var inp = document.querySelector('input');
function createGetSetValue( inputElement ){
var value = inputElement.value;
Object.defineProperty( inputElement, "value", {
get: function(){ return value; },
set: function( v ){ value = v + '1'; }
});
return inputElement;
};
createGetSetValue( inp );
inp.value = 10;
console.log( inp.value ) // Logs 101
<input value="2" />
因为当您使用 this.value = x
时,您正在再次调用 setter (导致无限循环)。这将独立存储值并将 getter 和 setter 设置为 return that 值而不是实际存储在输入中的值,允许您无需再次调用 getter 和 setter 即可对其进行修改。