Javascript Setter和value属性没有';我不能正常工作

Javascript Setter和value属性没有';我不能正常工作,javascript,Javascript,我试图在setsetter之后获取输入节点的值。但没有结果 $('#inp2')[0]。值='initail value'; 警报($('#inp2')[0]。值); //塞特 defineProperty($('#inp2')[0],“value”,{set:function(x){alert(x);}}); $('#inp2')[0]。值='显式调用激发'; 警报($('#inp2')[0]。值); $('inp2,'inp1')。on('keyup',function(){ $(this

我试图在set
setter
之后获取输入节点的值。但没有结果

$('#inp2')[0]。值='initail value';
警报($('#inp2')[0]。值);
//塞特
defineProperty($('#inp2')[0],“value”,{set:function(x){alert(x);}});
$('#inp2')[0]。值='显式调用激发';
警报($('#inp2')[0]。值);
$('inp2,'inp1')。on('keyup',function(){
$(this.this('p').html(this.value);
});


输入值1:

输入值2:


如果您认为在
input
框下方的
div
元素上调用
.html()
会以某种方式触发
input
元素上的
属性设置器,那么您就错了

一旦您瞄准了正确的元素,调用
.val()
可能会执行您想要的操作

但这里有一些反例说明为什么你所做的不起作用

thing=$('inp1')[0];
defineProperty(thing,“value”,{set:function(x){alert(x);}});
thing.value='a';//好啊直接调用属性
$(thing.value='b';//没有$(事物)是一个疑问。我们用.value污染了查询对象。
$(thing)[0]。值='c';//好啊我们刚把元素拿回来,直接给setter打电话。
$(thing.html('d');/。html()不调用'value'属性设置器。很抱歉
试一试{
$(thing)[0].html('e');//异常:这将抛出。元素上未定义html,它是jquery,
}捕获(忽略){console.error(忽略)}
$(thing.val('f');//确定:.val不调用值属性设置器
试一试{
$(thing)[0].val('g');//异常:这将引发.val未在元素上定义,它是jquery,
}捕获(忽略){console.error(忽略)}


您定义了一个名为
value
的属性,但未对其进行设置。你为什么期望这能奏效?另外,如果问题中的代码是可运行的代码段,而不是外部fiddle.Edited中的代码,那就太好了<代码>值
以前已设置。你能更详细地解释一下错误在哪里吗?如果你想触发一个属性设置程序,那么你必须像在前两个“显式”示例中那样,实际分配
.value=x
。但是在keyup处理程序中,调用
.html(this.value)
将不会调用setter。你认为应该吗?是的,应该。触发“keyup”事件时,应调用setter。但问题从别处开始。如果查看代码:
$('#inp2')[0]。值='explicit call fires';警报($('#inp2')[0]。值)将为“未定义”。我不明白二传手为什么这样做。