У меня есть рабочий вызов Ajax и функция, которая заполняет каталоги данных. Datalist используется для выбора из конечного списка дополнения к элементу UL на странице. Как только я добавлю один из datalist в фактический список, я хочу удалить эту опцию из datalist. Метод грубой силы, который я использую, - это очистить datalist и повторно заселить его.Удалить элемент из datalist
function populate_datalist_from_array(list_id, list_str)
{
clearChildren(list_id);
var arr = eval (list_str);
for (var i = 0; i < arr.length; i++) {
var opt = document.createElement('option');
opt.innerHTML = arr[i];
opt.value = arr[i];
document.getElementById(list_id).appendChild(opt);
}
}
function clearChildren(parent_id) {
var childArray = document.getElementById(parent_id).children;
if (childArray.length > 0) {
document.getElementById(parent_id).removeChild(childArray[ 0 ]);
clearChildren(parent_id);
}
}
Я проверил, что list_str
объект является правильным. то есть он содержит только параметры, которые еще не находятся в текущем списке. Но после вызова populate_datalist_from_array
с этим новым списком, datalist в выпадающем меню не изменится. Это потому, что браузер по существу скомпилировал все значения, которые были там (например, это была обычная автозаполнение на основе браузера) и не «забыл» значения, которые я хочу удалить?
Не совсем - вы используете тег 'select' вместо тега' datalist', но то же самое работает. Думаю, я нашел проблему. У меня был ошибочный индекс в связанной функции. –