【问题标题】:Filter markers between a certain price range在某个价格范围内过滤标记
【发布时间】:2015-12-25 02:16:25
【问题描述】:

我正在尝试创建一个功能来过滤某个价格范围内的所有标记,但是我无法使其工作。我用下面的代码试了一下。

我做错了什么?

JSFiddle

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);
        }
    }
}

【问题讨论】:

    标签: javascript google-maps google-maps-markers marker


    【解决方案1】:

    输入字段值是字符串,您需要将它们解析为数字,以便比较正常工作。根据您使用的号码类型,使用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){
    

    要使小提琴中的代码正常工作,您需要将 Javascript 代码放在不带包装器的头部,在 load 事件内但在其外部使用 priceRange 函数,以便可以从按钮事件访问它。将按钮中的属性从onlick更改为onclickhttp://jsfiddle.net/jaj1b018/3/

    【讨论】:

    • 与标记对象价格相同,也是字符串
    猜你喜欢
    • 2013-06-16
    • 2016-04-11
    • 1970-01-01
    • 2016-10-14
    • 1970-01-01
    • 2019-08-03
    • 2020-12-26
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多