2 回答

TA貢獻1936條經(jīng)驗 獲得超7個贊
這不起作用,因為list
an 的屬性HTMLInputElement
被定義為只讀
interface?HTMLInputElement?:?HTMLElement?{? ?[HTMLConstructor]?constructor(); ??... ??readonly?attribute?HTMLElement??list;??? ??... ?? }

TA貢獻1712條經(jīng)驗 獲得超3個贊
這里的問題是像id
和這樣的屬性name
可以追溯到文檔對象模型 (DOM)的更舊版本——可以追溯到1990 年代中期的DOM 級別 0(或“舊版 DOM” )。這些 DOM 屬性與 HTML 標(biāo)記中的同名屬性完全對應(yīng)。
相比之下,將元素list
的預(yù)定義內(nèi)容附加<datalist>
到<input>
元素的屬性要晚得多。它在 2018-19 年左右開始出現(xiàn)在大多數(shù)瀏覽器中。
(即使是現(xiàn)在,CanIUse 也表明它在 Firefox 中還沒有準(zhǔn)備好......盡管我自己在Firefox 83中的實驗表明它已經(jīng)準(zhǔn)備好了。)
因此,最可靠的方法是使用:
const myInput = document.createElement('input');
myInput.setAttribute('id', 'x');
myInput.setAttribute('name', 'y');
myInput.setAttribute('list', 'z');
console.log(myInput.getAttribute('id'));
console.log(myInput.getAttribute('name'));
console.log(myInput.getAttribute('list'));
添加回答
舉報