javascript - 使用从上一页传入的输入值来过滤页面加载时的列表

标签 javascript html dom input filter

好吧,这对我来说可能很难解释,但我会尝试一下。我有两个 HTML 页面:form.html 和 display.html。表单页面有一个输入,该输入获取一个值,然后在提交表单后将其放入本地存储中。表单提交后,用户将被带到显示页面,该显示页面将从本地存储中检索上一页的输入值,然后将该值显示在显示页面上的输入字段内。显示页面稍后将充当作业页面,该页面将显示作业列表,该列表可通过同一页面上输入字段内的值进行过滤。我可以通过在输入字段上使用 onkeyup 来使过滤器功能正常工作,但我无法使用 onload 之类的方法使过滤器功能与上一页的输入值一起工作。我使用两个页面的原因是,我稍后将在一个网站上使用此代码,该网站将在登陆页面上有一个搜索框,然后将被定向到带有过滤结果的“职位”页面。如果这真的很难理解,我很抱歉,我将在下面发布代码,以便您更好地理解。

非常感谢那些抽出时间帮助我解决这个问题的人,非常感谢。

表单.html

<!DOCTYPE html>
<html lang="en">

<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <meta http-equiv="X-UA-Compatible" content="ie=edge">
    <title>Document</title>
    <script>
        function passValues() {
            var firstName = document.getElementById("txt").value;
            localStorage.setItem("textValue", firstName);
            return false;
        }
    </script>
</head>

<body>
    <form action="display.html">
        <input type="text" id="txt" />
        <input type="submit" value="Click" onclick="passValues();" />
    </form>
</body>

</html>

显示.html

<!DOCTYPE html>
<html lang="en">

<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <meta http-equiv="X-UA-Compatible" content="ie=edge">
    <title>Document</title>
</head>

<body>
    <h1>Tokyo Expat Job Search</h1>
    <input onload="filter()" onkeyup="filter()" id="result" type="text">

    <ul id="Menu">
        <li><a href="#">English Techer</a></li>
        <li><a href="#">Waiter/Waitress</a></li>
        <li><a href="#">Developer</a></li>
        <li><a href="#">Banker</a></li>
        <li><a href="#">Designer</a></li>
        <li><a href="#">Logistics</a></li>
    </ul>

    <script>
        function filter() {

            var filterValue, input, ul, li, a, i;
            input = document.getElementById("result");
            filterValue = input.value.toUpperCase();
            ul = document.getElementById("Menu");
            li = ul.getElementsByTagName("li");

            for (i = 0; i < li.length; i++) {
                a = li[i].getElementsByTagName("a")[0];
                if (a.innerHTML.toUpperCase().indexOf(filterValue) > -1) {
                    li[i].style.display = "";

                } else {
                    li[i].style.display = "none";
                }
            }
        }


        document.getElementById("result").value = localStorage.getItem("textValue");
    </script>
</body>

</html>

最佳答案

尝试将监听器添加到window.onload输入没有这样的事件。

window.addEventListener('load', filter, false)

关于javascript - 使用从上一页传入的输入值来过滤页面加载时的列表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59744254/

相关文章:

javascript - Angular JS Controller - 范围问题(可能)

javascript - Jquery 切换和重置表单元素

html - CSS - 只有一半边框可见的边框

javascript - 未捕获的类型错误 : Cannot read property 'html' of undefined - AJAX post answer only in spesific div

javascript - 启动 PM2 时从 dotenv 文件加载一个变量

jquery - 移动设备上的 DICOM 图像/视频

javascript - 让第一个 child 打开 Accordion

html - 在 DOM 中存储 JSON 的最佳实践

javascript - "Trickle-down"自定义JavaScript事件

javascript - 如何在没有jquery的情况下查找集合中元素的索引