我有一個工作的Ajax調用和填充數據列表的函數。數據列表用於從有限列表中選擇在頁面上添加到UL元素。一旦我從數據列表中添加一個到實際列表,我想從數據列表中刪除該選項。我正在使用的蠻力方法是清除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
後,下拉列表中的數據列表不會更改。這是因爲瀏覽器本質上編譯了所有的值(比如它是一個基於瀏覽器的普通自動完成)並且不會「忘記」我想要刪除的值?
不完全 - 您正在使用'select'標籤而不是'datalist'標籤,但是同樣的事情是有效的。我想我找到了問題。我在相關函數中有一個錯誤的索引。 –