You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

实现按州、城市、社区层级展示的搜索结果功能求助

搜索城镇层级展示功能调整方案

问题说明

当前搜索功能仅显示匹配的社区名称,输入"town"时仅展示"Westmont Town Court";需要改为州 ↳ 城市 ↳ 社区的层级展示格式,例如California ↳ Escondido ↳ Westmont Town Court。

调整方案

1. HTML结构修改

在原层级容器后新增搜索结果展示容器,默认保留原层级列表的显示逻辑:

<div class="dropdown">
    <div id="myDropdown" class="dropdown-content">
        <input type="text" placeholder="Find a Community Near You" id="myInput" onkeyup="filterFunction()">
        <!-- 原层级列表 -->
        <div id="down" class="down">
            <ul class="state">
                <!-- California -->
                <li data-state="California">
                    <a href="https://mywebsite.com/our-communities/california">California</a>
                    <ul class="city">
                        <!-- San Diego -->
                        <li data-city="San Diego">
                            <a href="https://myweb.com/our-communities/california/san-diego">San Diego</a>
                            <ul class="community">
                                <li><a href="https://myweb.com/our-communities/california/san-diego/westmont-of-carmel-valley/">Westmont of Carmel Valley</a></li>
                                <!-- 补充测试用的目标社区 -->
                                <li><a href="https://myweb.com/our-communities/california/escondido/westmont-town-court/">Westmont Town Court</a></li>
                            </ul>
                        </li>
                    </ul>
                </li>
            </ul>
        </div>
        <!-- 新增搜索结果展示容器 -->
        <div id="searchResults" class="search-results"></div>
    </div>
</div>

2. JavaScript逻辑重写

替换原filterFunction,改为生成层级格式的搜索结果:

function filterFunction() {
    let input = document.getElementById("myInput");
    let filter = input.value.toUpperCase().trim();
    let downContainer = document.getElementById("down");
    let resultsContainer = document.getElementById("searchResults");
    
    // 清空历史结果
    resultsContainer.innerHTML = "";

    if (filter === "") {
        // 输入为空时,显示原层级列表,隐藏结果容器
        downContainer.style.display = "block";
        resultsContainer.style.display = "none";
        return;
    }

    // 输入有内容时,切换显示状态
    downContainer.style.display = "none";
    resultsContainer.style.display = "block";

    // 遍历所有社区节点匹配关键词
    let communities = downContainer.querySelectorAll(".community > li");
    communities.forEach(community => {
        let communityText = community.textContent.toUpperCase();
        if (communityText.includes(filter)) {
            // 获取层级数据
            let state = community.closest("[data-state]").dataset.state;
            let city = community.closest("[data-city]").dataset.city;
            let communityLink = community.querySelector("a").href;
            let communityName = community.querySelector("a").textContent;

            // 生成层级格式的结果条目
            let resultItem = document.createElement("div");
            resultItem.className = "result-item";
            resultItem.innerHTML = `<a href="${communityLink}">${state} ↳ ${city} ↳ ${communityName}</a>`;
            resultsContainer.appendChild(resultItem);
        }
    });

    // 无匹配结果时提示
    if (resultsContainer.children.length === 0) {
        resultsContainer.innerHTML = "<p class='no-results'>No matching communities found</p>";
    }
}

3. CSS样式补充

添加样式优化搜索结果的展示效果:

.search-results {
    margin-top: 10px;
    padding: 10px;
    border-top: 1px solid #eee;
}

.result-item {
    padding: 8px 0;
    border-bottom: 1px solid #f5f5f5;
}

.result-item a {
    text-decoration: none;
    color: #333;
    display: block;
}

.result-item a:hover {
    color: #007bff;
}

.no-results {
    color: #666;
    text-align: center;
    padding: 15px;
}

效果说明

  • 输入关键词(如"town")时,显示所有匹配社区的完整层级路径,点击可直接跳转至对应页面
  • 清空输入框后,自动恢复显示原有的州-城市-社区嵌套层级列表

内容的提问来源于stack exchange,提问作者Lotus

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.12 09:13:22