我想为输入字段分配一个值,该字段会动态更改其ID。该字段如下所示。
<input aria-autocomplete="list" aria-labelledby="downshift-5-label" autocomplete="off" id="downshift-5-input" placeholder="Enter agent name" class="css-1u5bp1w etr7mik2" value="">
我的要求是为该字段分配一个值。我尝试了以下方法。它显示了该值出现在UI中,但没有分配给上面的value =“”字段。
document.querySelector('*[placeholder="Enter agent name"]').value = "bf5a4";
是否有任何方法可以为此字段分配值?
答案 0 :(得分:1)
HTML元素在属性和属性之间有所区别。
简而言之,无论何时使用javascript element.xyz
,您都将访问名为xyz
的属性,而不是该属性。
但是,当您检查HTML <>
标签时,您正在查看的是属性。因此,您在代码中正确设置了value
属性,但是由于未设置<input... value="bf5a4">
属性,因此您不会看到value
。
实际上,如果您确实想设置属性,则必须显式调用setAttribute
(mdn),例如:
let el = document.querySelector('*[placeholder="Enter agent name"]');
el.value = 'bf5a4-property'; // sets property
el.setAttribute('value', 'bf5a4-attribute'); // sets attribute (// <input... value="bf5a4-attribute">)
<input aria-autocomplete="list" aria-labelledby="downshift-5-label"
autocomplete="off" id="downshift-5-input" placeholder="Enter agent name"
class="css-1u5bp1w etr7mik2" value="">