1

我已经定义了如下所示的复选框:

在此处输入图像描述

<label><input type="checkbox" id="Business Development box" onclick="boxclick(this,'skills','Business Development')" /> Business Development </label>
<label><input type="checkbox" id="Capacity Building box" onclick="boxclick(this,'skills','Capacity Building')" />  Capacity Building </label> 
<label><input type="checkbox" id="Communications and Marketing box" onclick="boxclick(this,'skills','Communications and Marketing')" />  Communications and Marketing</label>
<label><input type="checkbox" id="Consulting box" onclick="boxclick(this,'skills','Documentary/Media')" /> Consulting</label>
<label><input type="checkbox" id="Documentary/Media box" onclick="boxclick(this,'skills','Documentary/Media')" /> Documentary/Media</label>
<label><input type="checkbox" id="Economic Development box" onclick="boxclick(this,'skills','Economic Development')" /> Economic Development</label>
<label><input type="checkbox" id="Entrepreneurship box" onclick="boxclick(this,'skills','Entrepreneurship')" /> Entrepreneurship</label>
<label><input type="checkbox" id="Event Planning box" onclick="boxclick(this,'skills','Event Planning')" /> Event Planning</label>
<label><input type="checkbox" id="Financial Management box" onclick="boxclick(this,'skills','Financial Management')" /> Financial Management</label>

复选框触发 boxclick,它接收“类别”(技能)和类型(例如咨询)

boxclick 看起来像这样:

 function boxclick(box,category,type) {
        if (box.checked) {
          show(category, type);

        } else {
          hide(category, type);
        }
      }

boxclick触发器show,看起来像这样

 function show(category, type) {
       for (var i=0; i<gmarkers.length; i++) {
         if (gmarkers[i][category].toUpperCase().indexOf(type.toUpperCase()) !== -1) {
            gmarkers[i].setVisible(true);
         }
       }
       // == check the checkbox ==
       document.getElementById(type+" box").checked = true;
     }

gmarkers包含地图中的所有标记。 gmarkers[i][category]将包含个人拥有的所有技能,并且 indexOf 检查“类型”(例如咨询)是否包含在该文本数组中。

我在开始时自动将所有标记设置为不可见(我想不出另一种方便地过滤事物的方法),并且在每个复选框之后,所有具有该技能的学生都会出现。

问题- 如果我单击两个复选框,则会出现 UNION 而不是所有标记的 INTERSECTION。如何修改代码以仅显示 INTERSECTION?我的 javascript 经验很少,所以我很难解决这个问题。

可以在此处找到一个临时运行示例:http: //dreaminginswahili.com/admin/mapv4.html。请随时纠正我犯的任何其他新手错误。

另外,这里是这个东西的动画 gif:http: //i.imgur.com/XdJTfDx.gif

干杯!

4

0 回答 0