【问题标题】:set HTML5 input list value with JavaScript使用 JavaScript 设置 HTML5 输入列表值
【发布时间】:2014-09-15 12:20:21
【问题描述】:

我将通过 JavaScript 创建一个带有附加数据列表的 html5 输入字段。我在创建这些 dom 节点时没有任何问题,但是我在使用纯 JavaScript 设置 list 属性值时遇到了麻烦。这可能吗?我检查了节点的功能并且list 的值在那里,但是每当我尝试设置它时,都不会分配新值。有人有什么想法吗?

Here 是代码示例。

var _form = document.body.appendChild(document.createElement('form')),
    _input = _form.appendChild(document.createElement('input')),
    _datalist = _form.appendChild(document.createElement('datalist'));

_input.list = 'exampleList';
_input.datalist_id = 'exampleList';
_input.className = 'getme';

_datalist.id = 'exampleList';

for (var i = 0; i < 5; i++) {
    var _option = _datalist.appendChild(document.createElement('option'));
    switch(i){
        case i:
            _option.value = i;
            break;
    };
};

编辑

我找到了一种通过element.setAttribute(); 方法执行此操作的方法。如何使用类似于(例如)element.className = 'value'; 的语法来执行此操作。

提前谢谢你!

【问题讨论】:

  • 不要让我们去寻找你的代码。请将其包含在您的问题正文中。一定要另外提供一个小提琴,但始终在问题中提供您的代码。让我们尽可能轻松地为您提供帮助。
  • 感谢您的洞察力。我刚刚包含了相关示例。

标签: javascript html validation input


【解决方案1】:

根据MDN,没有属性可以直接设置该属性。所以看起来你被setAttribute()卡住了

您还应该注意DOM manipulations come with some performance ovehead,因此有时最好将它们最小化。您可能需要考虑以下几点:

var _form = document.body.appendChild(document.createElement('form')),
    _input = _form.appendChild(document.createElement('input')),
    _datalist = _form.appendChild(document.createElement('datalist'));


_datalist.id = 'exampleList';
_input.setAttribute('list','exampleList');

var _option = "";
for (var i = 0; i < 5; i++) {
    _option += "<option value='" + i + "' />";
};

_datalist.innerHTML = _option;

Demo

【讨论】:

  • 谢谢!我找不到任何东西,所以我倾向于认为没有方法,但这证实了这一点。谢谢@Jon P。你的表现建议也被注意到了:)
【解决方案2】:

使用 setAttribute() :

  var _form = document.body.appendChild(document.createElement('form')),
    _input = _form.appendChild(document.createElement('input')),
    _datalist = _form.appendChild(document.createElement('datalist'));

_input.setAttribute('list','exampleList')
_input.datalist_id = 'exampleList';

_datalist.id = 'exampleList';

for (var i = 0; i < 5; i++) {
    var _option = _datalist.appendChild(document.createElement('option'));
    _option.text =i;   
};

小提琴:http://jsfiddle.net/bkTxM/2/

【讨论】:

  • 感谢您的回复。不过,我希望使用 HTML5 数据列表。
  • 就在您发布答案之前,我想我可以使用setAttribute 函数设置列表值。我正在寻找您是否可以在我提供的示例中做到这一点。如果您也知道该怎么做,我将不胜感激!
猜你喜欢
  • 2011-08-07
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-12-14
相关资源
最近更新 更多