Javascript 在运行时是否可以将数据列表与js中的输入动态关联?

Javascript 在运行时是否可以将数据列表与js中的输入动态关联?,javascript,html,Javascript,Html,我无法使用js将数据列表与输入关联起来,但是如果我使用Chrome中的document inspector手动添加列表属性,我就能够将其关联起来 在做了一些研究之后,我偶然发现list属性是只读的。这是否意味着无法使用js关联数据列表,或者我使用了错误的属性 我在运行时动态创建输入和数据列表,作为我正在创建的javascript库的一部分,因此无法以正常方式附加数据列表 //请打开控制台 var myTextInput=document.getElementById('myTextInput'

我无法使用js将数据列表与输入关联起来,但是如果我使用Chrome中的document inspector手动添加列表属性,我就能够将其关联起来

在做了一些研究之后,我偶然发现list属性是只读的。这是否意味着无法使用js关联数据列表,或者我使用了错误的属性

我在运行时动态创建输入和数据列表,作为我正在创建的javascript库的一部分,因此无法以正常方式附加数据列表

//请打开控制台
var myTextInput=document.getElementById('myTextInput'),
myDataList=document.getElementById('myDataList');
myTextInput.list='myDataList';
log(myTextInput.list)//输出:空
myTextInput.list=myDataList.id;
log(myTextInput.list)//输出:空
myTextInput.list=myDataList;
log(myTextInput.list)//输出:空

使用
setAttribute()
-在Firefox和Chrome中适用:

myTextInput.setAttribute('list', 'myDataList');
我不知道您是否有可用的jQuery,但如果您有,jQuery版本将是:

$(myTextInput).attr('list', 'myDataList');

您说过,“链接属性是只读的”。我猜这是一个输入错误,你是指“列表”属性,对吗?是的,那是一个输入错误。回答很好,也很快。我很惊讶我在任何地方都找不到它,因为它似乎是如此常见的用例。我想知道他们为什么选择将列表属性设置为只读;使用setAttribute()设置属性是很常见的(并且“list”被描述为一个属性),尽管在复选框上的“checked”属性等情况下存在一些重叠,当页面加载时,该属性在最初可能被设置为一个属性后会成为一个属性(这就是为什么用于检查复选框的更正确的jQuery代码是.prop('checked',true)而不是.attr('checked',true))。我同意在这种情况下它很容易混淆,应该有更好的文档记录。