Javascript jQuery.val()对html块不起作用?

Javascript jQuery.val()对html块不起作用?,javascript,jquery,Javascript,Jquery,我不明白为什么这段代码不能按预期工作: var $obj = jQuery('<div>xx<input type="text" value="" />xx</div>'); $obj.find('input').val('testing'); console.log($obj.html()); var$obj=jQuery('xxxx'); $obj.find('input').val('testing'); log($obj.html()); 结果输出

我不明白为什么这段代码不能按预期工作:

var $obj = jQuery('<div>xx<input type="text" value="" />xx</div>');
$obj.find('input').val('testing');
console.log($obj.html());
var$obj=jQuery('xxxx');
$obj.find('input').val('testing');
log($obj.html());

结果输出没有任何变化,即值没有变化。但是
append()
和其他函数可以正常工作。可能有什么问题?

是输入对话框的属性

执行
.val(…)
将更改值属性,而不是DOM中的值

有关属性和属性之间的差异,请参见


如果希望看到值属性中的物理更改,可以执行以下操作:

var $obj = jQuery('<div>xx<input type="text" value="" />xx</div>');
$obj.find('input').attr('value','testing');
console.log($obj.html());
var$obj=jQuery('xxxx');
$obj.find('input').attr('value','testing');
log($obj.html());
演示:

属性映射到
.defaultValue
属性

没有映射到
.value
属性的属性。但是, 输入时,您可以设置属性
“value”
(很明显,
.defaultValue
)并将其反映出来 在属性
.value

因为您的输入是非脏的,所以您可以这样做

var $obj = jQuery('<div>xx<input type="text" value="" />xx</div>');
$obj.find('input').prop('defaultValue', 'testing');
console.log($obj.html());
//xx<input type="text" value="testing">xx
var$obj=jQuery('xxxx');
$obj.find('input').prop('defaultValue','testing');
log($obj.html());
//xxxx

设置
.value
属性从未更改由
html()
序列化的
属性。为什么向下投票可能重复?是的,你应该鼓励含糊和不精确的答案!