Значения HTML datalist из массива в javascript
У меня есть простая программа, которая должна принимать значения из текстового файла на сервере, а затем заполнять datalist как выделение в текстовом поле ввода.
для этой цели первым шагом, который я хочу сделать, является то, что я хочу знать, как массив javascript может использоваться в качестве параметров datalist динамически.
мой код :
<html>
<script>
var mycars = new Array();
mycars[0]='Herr';
mycars[1]='Frau';
</script>
<input name="anrede" list="anrede" />
<datalist id="anrede">
<option value= mycars[0]></option>
<option value="Frau"></option>
</datalist>
</html>
Я хочу заполнить текстовое поле ввода, содержащее datalist как предложение из массива. Также здесь Я не учитываю значения массива. На самом деле мне нужны не два параметра datalist, а dxnamic в зависимости от длины массива
4 ответов
Я не уверен, что ясно понял ваш вопрос. Во всяком случае, попробуйте следующее:
<input name="car" list="anrede" />
<datalist id="anrede"></datalist>
<script type="text/javascript">
var mycars = new Array();
mycars[0]='Herr';
mycars[1]='Frau';
var options = '';
for(var i = 0; i < mycars.length; i++)
options += '<option value="'+mycars[i]+'" />';
document.getElementById('anrede').innerHTML = options;
</script>
Это старый вопрос и уже достаточно ответили, но я собираюсь бросить метод DOM здесь в любом случае для тех, кто не любит использовать буквальный HTML.
<input name="car" list="anrede" />
<datalist id="anrede"></datalist>
<script>
var mycars = ['Herr','Frau'];
var list = document.getElementById('anrede');
mycars.forEach(function(item){
var option = document.createElement('option');
option.value = item;
list.appendChild(option);
});
</script>
Если вы используете ES6, вы можете сделать это таким образом, это методы пола Уоллса с синтаксисом ES6.
const list = document.getElementById('anrede');
['Herr','Frau'].forEach(item => {
let option = document.createElement('option');
option.value = item;
list.appendChild(option);
});
<input name="car" list="anrede" />
<datalist id="anrede"></datalist>
вы можете сделать это в jQuery, но с другой стороны, поскольку вы обрабатываете данные на сервере, вы можете генерировать HTML прямо там (просто предложение).
<script>
var mycars = new Array();
mycars[0]='Herr';
mycars[1]='Frau';
$(document).ready( function() {
$(mycars).each( function(index, item) {
var option = $('<option value="'+item+'"></option>');
$('#anrede').append(option);
});
});
</script>
<input name="anrede" list="anrede" />
<datalist id="anrede">
<!-- options are filled in the script -->
</datalist>
вот JSFiddle с этим кодом, поэтому вы можете немедленно попробовать:http://jsfiddle.net/mBMrR/