Свяжите список данных HTML с вводом (без установки атрибутов)

Можно ли с помощью javascript связать список данных с вводом, не устанавливая атрибуты id и list в нить?

Элемент HTML5 datalist обычно (и, возможно, исключительно) связан с элементом input путем установки атрибута list ввода в id< /strong> атрибут datalist:

<input list="animals">
<datalist id="animals">
  <option value="Bear">
  <option value="Cat">
  <option value="Dog">
</datalist> 

Эти атрибуты были бы ненужными, если бы элемент ввода мог инкапсулировать список данных с помощью закрывающего тега:

<input>
    <datalist>
      <option value="Bear">
      <option value="Cat">
      <option value="Dog">
    </datalist> 
</input>

Однако это не создает автоматических предложений, как это делает предыдущая разметка.

Допустим, вы хотите создать модуль ecmascript, который экспортирует div, содержащий ввод, содержащий список данных. Кроме того, давайте также предположим, что этот модуль будет использоваться многочисленными веб-сайтами в Интернете.

Экспорт этого элемента div, уже содержащего атрибуты id и list, может вызвать конфликт имен на веб-сайте этого веб-мастера.

Помимо использования неясного соглашения об именах для id, есть ли способ экспортировать этот модуль таким образом, чтобы исключить конфликты имен со всеми сайтами в Интернете?


person Lonnie Best    schedule 27.05.2018    source источник
comment
Спецификация для элемента ввода говорит об атрибуте списка, что значение должно быть идентификатором элемента ‹datalist› в том же документе. Поэтому я не думаю, что есть другой способ, кроме использования id.   -  person ecg8    schedule 27.05.2018
comment
Как говорит @ecg8, спецификация не указана любая другая возможность. Лучшее, что вы можете сделать, это сгенерировать максимально уникальный идентификатор в JS, что снизит вероятность коллизии. У этого вопроса есть несколько способов сделать это.   -  person Vasan    schedule 27.05.2018
comment
Жаль, что ввод не может инкапсулировать список данных. И также очень плохо, что список данных нельзя напрямую привязать к вводу на уровне Javascript-DOM без необходимости что-либо идентифицировать. Спасибо, парни.   -  person Lonnie Best    schedule 27.05.2018