过滤特定价格范围内的标记
Filter markers between a certain price range
我正在尝试创建一个函数来过滤特定价格范围内的所有标记,但我无法使其工作。我使用下面的代码进行了尝试。
我做错了什么?
function priceRange(){
var price1 = document.getElementById('price1').value;
var price2 = document.getElementById('price2').value;
for(i = 0; i < markers.length; i++){
marker = gmarkers[i];
if(marker.price > price1 && marker.price < price2){
mark.setVisible(true);
}
else{
mark.setVisible(false);
}
}
}
输入字段值是字符串,您需要将它们解析为数字才能正常进行比较。根据您使用的号码类型,使用 parseInt(str, 10)
或 parseFloat(str)
。在解析之前从字符串中删除千位分隔符:
var price1 = parseInt(document.getElementById('price1').value.replace(/\./g, ''), 10);
var price2 = parseInt(document.getElementById('price2').value.replace(/\./g, ''), 10);
以同样的方式解析标记价格(正如 charlietfl 指出的那样):
if(parseInt(marker.price.replace(/\./g, ''), 10) > price1 && parseInt(marker.price.replace(/\./g, ''), 10) < price2){
要使 fiddle 中的代码正常工作,您需要将 Javascript 代码放在没有包装器的头部,在 load
事件中但带有 priceRange
在它之外运行,以便可以从按钮事件访问它。将按钮中的属性从 onlick
更改为 onclick
:http://jsfiddle.net/jaj1b018/3/
我正在尝试创建一个函数来过滤特定价格范围内的所有标记,但我无法使其工作。我使用下面的代码进行了尝试。
我做错了什么?
function priceRange(){
var price1 = document.getElementById('price1').value;
var price2 = document.getElementById('price2').value;
for(i = 0; i < markers.length; i++){
marker = gmarkers[i];
if(marker.price > price1 && marker.price < price2){
mark.setVisible(true);
}
else{
mark.setVisible(false);
}
}
}
输入字段值是字符串,您需要将它们解析为数字才能正常进行比较。根据您使用的号码类型,使用 parseInt(str, 10)
或 parseFloat(str)
。在解析之前从字符串中删除千位分隔符:
var price1 = parseInt(document.getElementById('price1').value.replace(/\./g, ''), 10);
var price2 = parseInt(document.getElementById('price2').value.replace(/\./g, ''), 10);
以同样的方式解析标记价格(正如 charlietfl 指出的那样):
if(parseInt(marker.price.replace(/\./g, ''), 10) > price1 && parseInt(marker.price.replace(/\./g, ''), 10) < price2){
要使 fiddle 中的代码正常工作,您需要将 Javascript 代码放在没有包装器的头部,在 load
事件中但带有 priceRange
在它之外运行,以便可以从按钮事件访问它。将按钮中的属性从 onlick
更改为 onclick
:http://jsfiddle.net/jaj1b018/3/