马黑黑 发表于 2025-9-22 13:03

文本检索演示

<div class="codebox" data-prev="1">
&lt;style&gt;
        .box { margin: 20px auto; width: 80%; }
        .items { padding: 4px 8px; }
        .items:hover { background: #aaa; }
        .invisibled { display: none; }
&lt;/style&gt;

&lt;div class="box"&gt;
        &lt;label for="searchInput"&gt;搜索&lt;/label&gt;
        &lt;input type="text" id="searchInput" /&gt;
&lt;/div&gt;
&lt;div id="articleList" class="box"&gt;&lt;/div&gt;

&lt;script&gt;
        const articleList = document.querySelector('#articleList');
        const searchInput = document.getElementById('searchInput');

        // 字符来源
        const str = `ABCD中国园林是由建筑、山水、花木等组合而成的一个oo综合艺术品,147富有诗情画意。Mi叠山理水要造成“虽由人作,宛自天开”的境界。山与la水的关系究竟如何呢?abcd简言之,模山范水,用局部之la景而非缩小(网师园水池仿虎丘白莲池,极妙),ok处理原则悉符画本。OK山贵有脉,水OO贵有源,脉源贯通,全园生动。xyz我曾经用“水随山转,山因水活”B&B与“溪水因山成曲折,山蹊随地作低mi平”来说La明山水之pink间的关系,也就是369从真山真水中所得到的启示。Let明末清初叠山家张南垣主张用平冈小陂、Pink陵阜陂阪,也就是要使园林山水la接近自然。如果我们Mi能初步理解这个道理,就b&b不至于离自然太远,XYZ多少能呈现水Mi石交融的美妙境界。`;

        //文档片段
        const fragment = new DocumentFragment();

        //随机生成30个div并赋予其随机文本
        for (let x = 0; x &lt; 30; x ++) {
                const start = Math.floor(str.length / 2);
                const a = Math.floor(Math.random() * start);
                const b = a + Math.ceil(Math.random() * 20);
                const output = str.substring(a, b);
                const div = document.createElement('div');
                div.classList.add('items');
                div.textContent = (x + 1) + '. ' + output;
                fragment.appendChild(div); //加入到文档片段
        }

        articleList.appendChild(fragment); //加入到文章列表

        const searchArticles = () =&gt; {
                const divs = document.querySelectorAll('.items');
                const keyword = searchInput.value;
                //清除隐藏CSS类
                divs.forEach(div =&gt; div.classList.remove('invisibled'));
                //隐藏不包含关键字的div
                for (let j = 0; j &lt; divs.length; j++) {
                        if (divs.textContent.indexOf(searchInput.value) === -1) {
                                divs.classList.add('invisibled');
                        }
                }
        };

        //关键字文本框输入时
        searchInput.oninput = () =&gt; searchArticles();

&lt;/script&gt;
</div>

<script type="module">
import linenumber from 'https://638183.freep.cn/638183/web/js/linenumber.js';
linenumber();
</script>

马黑黑 发表于 2025-9-22 13:10

本演示——

检索目标 :指定元素
检索对象 :指定元素内所有 div 标签的文本
检索方法 :在搜索输入框输入任何字符

这是为实现帖宝的检索功能而单独做的测试案例,感觉有用,所以公布出来。

沐心 发表于 2025-9-22 14:43

这种技术活,看起来就头大{:4_173:}

马黑黑 发表于 2025-9-22 18:26

沐心 发表于 2025-9-22 14:43
这种技术活,看起来就头大

不是一个头来两个大就好{:4_170:}

沐心 发表于 2025-9-22 18:31

马黑黑 发表于 2025-9-22 18:26
不是一个头来两个大就好
也就差不多这意思,所以我代码只会套用,有时候改动还容易改乱码了{:4_173:}

花飞飞 发表于 2025-9-22 19:30

马黑黑 发表于 2025-9-22 13:10
本演示——

检索目标 :指定元素


特别灵敏,输入一个字它就把包含的筛选出来了。

马黑黑 发表于 2025-9-22 19:35

花飞飞 发表于 2025-9-22 19:30
特别灵敏,输入一个字它就把包含的筛选出来了。

就是花飞飞的速度{:4_170:}

马黑黑 发表于 2025-9-22 19:35

沐心 发表于 2025-9-22 18:31
也就差不多这意思,所以我代码只会套用,有时候改动还容易改乱码了

改乱了再来,没关系

花飞飞 发表于 2025-9-22 19:39

多点几次发现文档是随机排行的,每行字数随机,内容也随机,感觉很神奇。。。
鼠标移到某一行会高亮,这个跟平时的代码一样。。

马黑黑 发表于 2025-9-22 19:39

花飞飞 发表于 2025-9-22 19:39
多点几次发现文档是随机排行的,每行字数随机,内容也随机,感觉很神奇。。。
鼠标移到某一行会高亮,这个 ...

这个只是演示,所以弄出一些随机的文本

红影 发表于 2025-9-22 19:43

这个是文字搜索,原来研究这个是为了帖宝的检索,这个很好用的呢{:4_187:}

花飞飞 发表于 2025-9-22 19:43

JS里的中文字       
//清除隐藏CSS类   这一行隐藏CSS是清的哪一类不知道了。
//隐藏不包含关键字的div   这一行比较明白,确定搜索关键字之后,没有的隐藏起来。。

搜索常用啊,原来背景有这么多工作要做。。
看这代码也挺简洁的,跟做个贴子差不多的量。。{:4_173:}

马黑黑 发表于 2025-9-22 19:46

花飞飞 发表于 2025-9-22 19:43
JS里的中文字       
//清除隐藏CSS类   这一行隐藏CSS是清的哪一类不知道了。
//隐藏不包含关键字的div   这 ...

过滤的工作机制是酱紫:

检索的时候,将不包含关键字的 div 隐藏掉。如此,每次重新检索,都需要将已经隐藏的解除,再重新隐藏要隐藏的 div。

马黑黑 发表于 2025-9-22 19:47

红影 发表于 2025-9-22 19:43
这个是文字搜索,原来研究这个是为了帖宝的检索,这个很好用的呢

帖宝的检索其实完全可以使用数据库,但从性能上讲,DOM检索速度更快,所以思考再三,决定从已有的列表中进行检索

花飞飞 发表于 2025-9-22 20:16

马黑黑 发表于 2025-9-22 19:46
过滤的工作机制是酱紫:

检索的时候,将不包含关键字的 div 隐藏掉。如此,每次重新检索,都需要将已 ...

原来是有隐藏,也要有清除隐藏,方便下次检索。。{:4_173:}
感觉代码的排列总是有点倒序。。

花飞飞 发表于 2025-9-22 20:16

马黑黑 发表于 2025-9-22 19:39
这个只是演示,所以弄出一些随机的文本

看出来了,排列是没有任何规律的

花飞飞 发表于 2025-9-22 20:17

马黑黑 发表于 2025-9-22 19:35
就是花飞飞的速度

花飞飞没啥速度呀。。。最近都没做贴子
现在看到贴宝里的导入导入,检索。。。
贴宝里这几项太方便了,如果贴子太多,就可以凭印象关键词就可以搜到。。

马黑黑 发表于 2025-9-22 20:45

花飞飞 发表于 2025-9-22 20:17
花飞飞没啥速度呀。。。最近都没做贴子
现在看到贴宝里的导入导入,检索。。。
贴宝里这几项太方便了, ...

用用再说吧

马黑黑 发表于 2025-9-22 20:45

花飞飞 发表于 2025-9-22 20:16
看出来了,排列是没有任何规律的

嗯嗯

马黑黑 发表于 2025-9-22 20:46

花飞飞 发表于 2025-9-22 20:16
原来是有隐藏,也要有清除隐藏,方便下次检索。。
感觉代码的排列总是有点倒序。。

很多事情,思维方式和人不同。

这和canvas画布一样:先把一切请了再画
页: [1] 2 3 4
查看完整版本: 文本检索演示