我有一个有效的 Ajax 调用和填充数据列表的函数。datalist 用于从有限列表中选择添加到页面上的 UL 元素。一旦我将数据列表中的一个添加到实际列表中,我想从数据列表中删除该选项。我使用的蛮力方法是清除数据列表并重新填充它。
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
使用该新列表调用后,下拉列表中的数据列表不会改变。这是因为浏览器基本上已经编译了所有存在的值(就像它是一个普通的、基于浏览器的自动完成)并且没有“忘记”我想要删除的值?