【发布时间】:2021-12-23 06:36:44
【问题描述】:
所以我目前正在尝试使我的标记上的所有过滤器都多选。我遇到的问题是:
如果我想查找所有活跃的人,我按下下拉菜单并单击活跃。然后下拉菜单关闭并给我所有活跃的人。但是假设我想看到活跃和不活跃的人。我再次单击下拉菜单,然后单击非活动。每个标记都消失了。我认为这与 for 循环没有注册不可见的标记有关,即marker.setVisible(false);
所以我尝试同时输入marker.setVisible(true); 和marker.setMap(map);,但问题仍然存在。我想我需要让所有的标记都可见,这样它就可以清楚地看到所有的标记。也许我错了,我错过了一些东西。这是我当前的代码:
JS:
filterMarkers = function(fieldID){
var selective = document.getElementById(fieldID).options;
var arrayOfSelectedIDs = [];
for (i = 0; i < selective.length; i++)
{
if (selective[i].selected){
arrayOfSelectedIDs.push(selective[i].value)
}
}
console.log(arrayOfSelectedIDs);
for (i = 0; i < gmarkers.length; i++)
{
marker = gmarkers[i];
marker.setMap(map)
marker.setVisible(true);
console.log(gmarkers.length);
if (marker.status.includes(arrayOfSelectedIDs))
{
marker.setVisible(true);
}
else {
marker.setVisible(false);
}
HTML:
<select class="status-multiple" required name="status[]" multiple="multiple" id="status" onchange="filterMarkers(this.id);" style="width: 7%;">
<option></option>
<option value="Active">Aktiv</option>
<option value="Inactive">Inaktiv</option>
<option value="Prospective">Prospective</option>
</select>
【问题讨论】:
-
除了两个右花括号外,这就是
filterMarkers的全部吗? -
完整的代码会很有用
-
是的。我已经将所有标记都推送到了这个数组中。
-
我可以上传完整的代码,但是所有的css、js和html都在一个文件中(不是我的选择)
标签: javascript html css google-maps multi-select