javascript和HTML手机端实现多条件筛选的实战记录(筛选层的展示与隐藏、AJAX传输数组)

news2024/11/17 13:52:45

在这里插入图片描述
实现多条件筛选功能在JavaScript和HTML中可以分为以下几个步骤:

  • HTML页面布局: 设计你的页面布局,包括筛选条件的选择器和结果展示区域。‘
  • ’ JavaScript逻辑:通过JavaScript监听筛选条件的变化,并根据选择的值对结果进行筛选。
  • 动态展示: 实时更新页面上的结果展示区域。

HTML容器

<div class="hd" style="margin-top: 40px;">
        <div class="lock-title">贷款情况</div>
        <div class="list" id="loan">
            <ul>
                                    <li class="lock-filter-btn">工商银行</li>
                                    <li class="lock-filter-btn">农业银行</li>
                            </ul>
        </div>
    </div>

    <div class="hd">
        <div class="lock-title">抵押方式</div>
        <div class="list" id="loan1">
            <ul>
                                    <li class="lock-filter-btn">信用贷款</li>
                                    <li class="lock-filter-btn">抵押贷款</li>
                                    <li class="lock-filter-btn">质押贷款</li>
                                    <li class="lock-filter-btn">担保贷款</li>
                            </ul>
        </div>
    </div>

javascript操作DOM样式和取值

设置全局变量loanData

    var loanData = ['', '', '', '', '', '', '', '', ''];

DOM样式选择

$("#loan ul li").click(function () {
    if ($(this).hasClass("active")) {
        $("#loan ul li").removeClass("active");
        loanData[0] = '';
    } else {
        $(this).addClass("active").siblings().removeClass("active");
        loanData[0] = $(this).text();
    }
});

$("#loan1 ul li").click(function () {
    if ($(this).hasClass("active")) {
        $("#loan1 ul li").removeClass("active");
        loanData[1] = '';
    } else {
        $(this).addClass("active").siblings().removeClass("active");
        loanData[1] = $(this).text();
    }
});

筛选层的展示与隐藏

    //展示筛选项
    $('#filterBtn').click(function () {
        $('.screen').css('display','block');
    })
    
//隐藏筛选
$(".lock-top").click(function () {
    $('.screen').css('display', 'none');
});

//取消筛选
$("#reset").click(function () {
    loanData = ['', '', '', '', '', '', '', '', '']
    $("ul li").removeClass("active");
    //console.log(loanData);
});

将数组通过ajax传递至后台

 var jsonData = JSON.stringify(loanData);
    $.ajax({
        type: 'get',
        async: true,
        data: {
            keywords: keywords,
            fromType: fromType,
            loanData: jsonData
        },
        url: './api/api.php?act=getMarkers&token=3cab7ce4142608c0f40c785b5ab5ca24',
        dataType: "json",
        success: function (res) {
            //console.log(res.searchData);
            var data = res.data;
            //异常处理;
            if (data.length > 0) {
                intMap(data, type);
            } else {
                layer.msg("未搜索到数据", {icon: 5, time: 1000}, function () {
                    intMap(data, 1);
                })
            }
        },
        error: function (err) {
            console.log("百度地图开发平台API:请求数据失败!" + JSON.stringify(err));
        }
    });

后台接受数据变量

@$loanData = json_decode($_GET["loanData"], true);
if ($loanData[0] != "") {
    $sql .= " AND poi_loan = '" . $loanData[0] . "'";
}
if ($loanData[1] != "") {
    $sql .= " AND poi_mortgage = '" . $loanData[1] . "'";
}
if ($loanData[2] != "") {
    $sql .= " AND poi_loan_amount = '" . $loanData[2] . "'";
}
if ($loanData[3] != "") {
    $sql .= " AND poi_vscosity = '" . $loanData[3] . "'";
}
if ($loanData[4] != "") {
    $sql .= " AND poi_industry = '" . $loanData[4] . "'";
}
if ($loanData[5] != "") {
    $sql .= " AND poi_product = '" . $loanData[5] . "'";
}
if ($loanData[6] != "") {
    $sql .= " AND poi_loan_type = '" . $loanData[6] . "'";
}
if ($loanData[7] != "") {
    $sql .= " AND poi_loan_category = '" . $loanData[7] . "'";
}
if ($loanData[8] != "") {
    $sql .= " AND poi_liaison = '" . $loanData[8] . "'";
}

JSON.stringify的用法

JSON.stringify() 是一个 JavaScript 方法,用于将 JavaScript 值(对象、数组、字符串、数字、布尔值等)转换为 JSON 格式的字符串。这个方法属于 JavaScript 的内置对象 JSON,用于处理 JSON 数据。

语法

JSON.stringify(value, [replacer], [space])
  • value:必需,要转换的 JavaScript 值(通常为对象或数组)。
  • replacer:可选,用于转换结果的函数或数组。如果提供,它可以改变转换过程中的字符串化行为。
  • space:可选,用于在输出字符串中添加额外的空格或换行符,以使其更易于阅读。可以是数字(表示空格数)或字符串(直接添加到输出中)。

示例

基本用法
const obj = {
  name: "John",
  age: 30,
  city: "New York"
};

const jsonString = JSON.stringify(obj);
console.log(jsonString); // '{"name":"John","age":30,"city":"New York"}'
使用 replacer 函数
const obj = {
  name: "John",
  age: 30,
  city: "New York"
};

const replacer = function(key, value) {
  if (typeof value === 'string') {
    return undefined; // 过滤掉所有的字符串属性
  }
  return value;
};

const jsonString = JSON.stringify(obj, replacer);
console.log(jsonString); // '{"age":30}'
使用 space 参数
const obj = {
  name: "John",
  age: 30,
  city: "New York"
};

const jsonString = JSON.stringify(obj, null, 2); // 使用 2 个空格缩进
console.log(jsonString);
/* 输出:
{
  "name": "John",
  "age": 30,
  "city": "New York"
}
*/

注意事项:

  • JSON.stringify() 只能序列化可枚举的属性。对于不可枚举的属性,该方法会忽略。
  • 如果对象中存在循环引用,即对象的属性值间接或直接引用了对象本身,JSON.stringify() 会抛出错误。例如:var obj = {}; obj.a = obj; 在这种情况下,你需要提供一个自定义的 replacer 函数来处理循环引用。

@漏刻有时

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1303252.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

编辑器Sublime text 常用快捷命令 列模式 替换空行

平替notepad 下载可取官网 www.sublimetext.com 据说可以无限试用&#xff0c;没有功能限制 1、快速删除空行 ctrl h选择正则表达式 .*Find输入&#xff1a; ^(\t)*$\nReplace输入&#xff1a;点击Replace All 2、快速选择指定字符 用鼠标选中alt f3修改 3、列编辑模式 ct…

亿道三防平板/手持终端/工业笔记本/车载电脑配件指南,使用高效加倍!

以前我们在选购合适的三防加固计算机时&#xff0c;总是在强调项目的规格参数需求&#xff0c;强调三防平板/手持终端/工业笔记本/车载电脑等终端设备的性能和功能。然而&#xff0c;我们常常忽略了一个重要的维度&#xff1a;用户体验。三防加固计算机作为数字化基础设施和生产…

Spark与PySpark(1.概述、框架、模块)

目录 1.Spark 概念 2. Hadoop和Spark的对比 3. Spark特点 3.1 运行速度快 3.2 简单易用 3.3 通用性强 3.4 可以允许运行在很多地方 4. Spark框架模块 4.1 Spark Core 4.2 SparkSQL 4.3 SparkStreaming 4.4 MLlib 4.5 GraphX 5. Spark的运行模式 5.1 本地模式(单机) Local运行模…

ubuntu18.04配置cuda+cudnn+tensorrt+anconda+pytorch-gpu+pycharm

一、显卡驱动安装 执行nvidia-smi查看安装情况 二、cuda安装 cuda官网下载cuda_11.6.2_510.47.03_linux.run&#xff0c;安装执行 sudo sh cuda_11.6.2_510.47.03_linux.run提升安装项&#xff0c;驱动不用安装&#xff0c;即第一项&#xff08;Driver&#xff09;&#xff…

SpringBoot集成swagger2配置权限认证参数

作者简介&#xff1a;大家好&#xff0c;我是撸代码的羊驼&#xff0c;前阿里巴巴架构师&#xff0c;现某互联网公司CTO 联系v&#xff1a;sulny_ann&#xff08;17362204968&#xff09;&#xff0c;加我进群&#xff0c;大家一起学习&#xff0c;一起进步&#xff0c;一起对抗…

【JavaWeb学习笔记】8 - HTTP

一、常用文档 请求头 响应头 中间件获取的网页协议和返回的内容 这些称为HTTP协议 请求和响应 常见的请求头 响应头 状态码 HTTP状态码 当浏览者访问一个网页时&#xff0c;浏览者的浏览器会向网页所在服务器发出请求。当浏览器接收并显示网页前&#xff0c;此网页所在的服务…

【二者区别】cuda和cudatoolkit

Pytorch 使用不同版本的 cuda 由于课题的原因&#xff0c;笔者主要通过 Pytorch 框架进行深度学习相关的学习和实验。在运行和学习网络上的 Pytorch 应用代码的过程中&#xff0c;不少项目会标注作者在运行和实验时所使用的 Pytorch 和 cuda 版本信息。由于 Pytorch 和 cuda 版…

联邦蒸馏中的分布式知识一致性 | TIST 2024

联邦蒸馏中的分布式知识一致性 | TIST 2024 联邦学习是一种隐私保护的分布式机器学习范式&#xff0c;服务器可以在不汇集客户端私有数据的前提下联合训练机器学习模型。通信约束和系统异构是联邦学习面临的两大严峻挑战。为同时解决上述两个问题&#xff0c;联邦蒸馏技术被提…

vue 中国省市区级联数据 三级联动

vue 中国省市区级联数据 三级联动 安装插件 npm install element-china-area-data5.0.2 -S 当前版本以测试&#xff0c;可用。组件中使用了 element-ui, https://element.eleme.cn/#/zh-CN/component/installation 库 请注意安装。插件文档 https://www.npmjs.com/package/ele…

【Go-自学版】03-即时通信系统1

1. 基础 server 构建 main.go | server.go // main.go package mainfunc main() {// http://127.0.0.1:8888/ server : NewServer("127.0.0.1", 8888)server.Start() }// server.go package mainimport ("fmt""net" )type Server struct {IP …

论文阅读《High-frequency Stereo Matching Network》

论文地址&#xff1a;https://openaccess.thecvf.com/content/CVPR2023/papers/Zhao_High-Frequency_Stereo_Matching_Network_CVPR_2023_paper.pdf 源码地址&#xff1a; https://github.com/David-Zhao-1997/High-frequency-Stereo-Matching-Network 概述 在立体匹配研究领域…

MAC配置环境变量

1、配置 JAVA JDK 1.1、查看 JDK 安装目录 &#xff08;1&#xff09;可以在Android Studio中查看&#xff0c;复制该路径 &#xff08;2&#xff09;也可以在官网下载 Java JDK下载地址 mac中的安装地址是"资源库->Java->JavaVirtualMachines"中 1.2、…

Java - Mybatis的缓存机制、集成SpringBoot后缓存相关问题

mybaits提供一级缓存&#xff0c;和二级缓存 一级缓存&#xff08;默认开启&#xff09; 一级缓存是SqlSession级别的缓存。在操作数据库时需要构造 sqlSession对象&#xff0c;在对象中有一个(内存区域)数据结构&#xff08;HashMap&#xff09;用于存储缓存数据。不同的sqlSe…

秒级监控、精准迅速:全面保障业务可用性 | 开源日报 No.101

louislam/uptime-kuma Stars: 41.1k License: MIT Uptime Kuma 是一个易于使用的自托管监控工具&#xff0c;主要功能和核心优势包括&#xff1a; 监控 HTTP(s) / TCP / HTTP(s) 关键词 / HTTP(s) Json 查询 / Ping / DNS 记录等服务的可用性提供时尚、响应迅速且良好用户体验…

STM32F407-14.3.1-01 时基单元

时基单元 可编程高级控制定时器的主要模块是一个 16 位计数器及其相关的自动重载寄存器。计数器可递增计数、递减计数或交替进行递增和递减计数。计数器的时钟可通过预分频器进行分频。 计数器、自动重载寄存器和预分频器寄存器可通过软件进行读写。即使在计数器运行时也可执行…

VR串流线方案:实现同时充电传输视频信号

VR&#xff08;Virtual Reality&#xff09;&#xff0c;俗称虚拟现实技术&#xff0c;是一项具有巨大潜力的技术创新&#xff0c;正在以惊人的速度改变我们的生活方式和体验&#xff0c;利用专门设计的设备&#xff0c;如头戴式显示器&#xff08;VR头盔&#xff09;、手柄、定…

Kudu-架构与设计

Kudu架构与设计 一、背景1.存储组件2.使用场景3.多组件组合缺点3.1 架构复杂3.2 时效性低3.3 应对数据更新 二、Kudu概述1.设计特点2.框架适用场景3.框架不适用场景 三、数据模型与存储1.Table2.Tablet3.MetaData4.RowSet5.MemRowSet6.DiskRowSet6.1 Base Data6.2 Delta Stores…

spring结合设计模式之策略模式

策略模式基本概念&#xff1a; 一个接口或者抽象类&#xff0c;里面两个方法&#xff08;一个方法匹配类型&#xff0c;一个可替换的逻辑实现方法&#xff09;不同策略的差异化实现(就是说&#xff0c;不同策略的实现类) 使用策略模式替换判断&#xff0c;使代码更加优雅。 …

从docker镜像提取文件

1. 从Docker镜像提取JAR文件 Docker是一种流行的容器化平台&#xff0c;允许开发人员将应用程序及其所有依赖关系打包到一个容器中。这使得应用程序的部署和迁移变得更加简单和可靠。在某些情况下&#xff0c;我们可能需要从Docker镜像中提取JAR文件&#xff0c;以便进行进一步…

Dubbo 的 go 语言实现迎来了 Dubbo3 版本

新版本的 dubbo-go: 全面升级 Triple 协议,兼容 gRPC、标准 HTTP 客户端,提供简单明了的 API 用于编写 RPC server 与 client,解决组件间的基本通信问题。 针对微服务场景,提供了完善的服务治理能力,这包括配置管理、可观测性、流量管控规则、生态集成与适配等的全面升级…