我正在建立一个网站,显示当地的午餐地点。该网站使用复选框来隐藏和显示内容:-
<li>Sandwich: <input type="checkbox" checked="checked" id="sandwichbox" onclick="boxclick(this,'sandwich')" /></li>
<li>Salad: <input type="checkbox" id="saladbox" onclick="boxclick(this,'salad')" /></li>
<li>Pasta: <input type="checkbox" id="pastabox" onclick="boxclick(this,'pasta')" /></li>
这些工作正常,但我正在使用 switch 语句来删除标记。
function hide(category) {
switch(category) {
case "sandwich":
for (var i=0; i<gmarkers.length; i++) {
if (gmarkers[i].sandwich == 1) {
gmarkers[i].setVisible(false);
}
}
break;
case "salad":
for (var i=0; i<gmarkers.length; i++) {
if (gmarkers[i].salad == 1) {
gmarkers[i].setVisible(false);
}
}
break;
case "pasta":
for (var i=0; i<gmarkers.length; i++) {
if (gmarkers[i].pasta == 1) {
gmarkers[i].setVisible(false);
}
}
break;
}
}
我这样做是因为商店可以销售多种商品(例如三明治和沙拉),因此每个商店不能有一个类别。所以在我的 XML 中,每个单独的产品都有节点:-
<markers>
<marker name="Earl of Sandwich" address="40 Ludgate Hill" tel="020 7236 2846" website="www.earlofsandwich.co.uk" lat="51.514072" lng="-0.101638" sandwich="1" salad="1" pasta="" oriental="" curry="" mexican="" jacket="" soup="1" sushi="" roast="" wraps="1" falafel=""/>
<marker name="Chao! Now" address="4 St Andrews Hill" tel="02036320368" website="www.chaonow.co.uk" lat="51.513008" lng="-0.101322" sandwich="1" salad="" pasta="" oriental="1" curry="" mexican="" jacket="" soup="1" sushi="" roast="" wraps="" falafel=""/>
</markers>
我想做的是删除 switch 语句并将其替换为类似的内容,将类别值传递到 for 循环中,但我似乎无法让它工作:-
function hide(category) {
for (var i=0; i<gmarkers.length; i++) {
if (gmarkers[i].category == 1) {
gmarkers[i].setVisible(false);
}
}
}
我尝试了以下方法:-
function hide(category) {
var mymarker = "gmarkers[i]." + category;
for (var i=0; i<gmarkers.length; i++) {
if (mymarker == 1) {
gmarkers[i].setVisible(false);
}
}
}
但这只是将 mymarker 作为变量传递,并且 i 没有被赋值。
非常感谢任何帮助,或者如果我走错了路并且应该为我的数据使用不同的格式,请指出。我正在考虑的另一种方法是将值添加到数组并循环遍历该数组,但是,我只有一个 1 或 null 值,并且无法再次使用类别变量获得二维数组。
在此先感谢,如果您需要更多信息,请告诉我。