JS不区分大小写匹配字符串高亮模拟浏览器Ctrl+F

    <div id="box">qqqqqqqq啊啊WWWWWWWWWWWQQ<p>Q</p> QQwwwwQQQasdadqq</div>

    var str = document.querySelector("#box").innerHTML;
    var heights = str => `<span style="color:red;">${str}</span>`;
    function fun(text,val){
        var a = new RegExp(val,'gi');
        return text.replace(a,function(num){
            return heights(num)
        })
    }
    document.querySelector("#box").innerHTML = fun(str,'q')
replace函数

参数1:字符串或正则
参数2 :要替换的 字符串 或函数

函数里有三个参数,不明白的童鞋可以console.log在控制台查看
通过arguments来访问,我看完后顿时恍然大悟

匹配字符串无论大小写高亮显示

当时写的 toLocaleLowerCase 转换大小写, 但是这样无疑会更改页面原有的大写字母,不算实现需求; houlai ,写出另一种方法,问题得以解决

function bind(input, text) {
    /**
    @param {Object} 绑定的input框
    @param {text}    绑定的字段
     */
    let oldHtml = text.html()
    input.bind('input propertychange', function(a){
        let inpVal = a.target.value;
        let texts = oldHtml;
        if (inpVal) {
            let allVal = oldHtml.match(new RegExp(inpVal, 'ig'));
            if (allVal) {
                for (var j = 0; j < allVal.length; j ++) {
                    texts = texts.replace(allVal[j], '[*' + j + '*]');
                    // console.log(allVal[j],'[*' + j + '*]',texts)
                }
                for (var i = 0; i < allVal.length; i ++) {
                    texts = texts.replace('[*' + i + '*]', '<span class="highlight">' + allVal[i] + '</span>');
                }
            }
        }
        text.html(texts);
    });
}
bind($('#input'), $('#div'))

以上两种方法都不失为好的解决办法,多写多想,加油加油!努力

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: 可以使用 `window.find()` 方法来实现浏览器中的 Ctrl + F 功能。此方法接受一个参数作为要查找的文本,可以在页面中查找匹配的文本内容。 示例代码如下: ```javascript function findText() { var text = prompt("请输入要查找的文本"); if (text) { if (window.find(text)) { window.getSelection().collapseToEnd(); } else { alert("未找到匹配的文本"); } } } ``` 在此代码中,我们首先使用 `prompt()` 方法获取用户输入的要查找的文本。然后使用 `window.find()` 方法查找匹配的文本,如果找到了则将光标移到匹配文本的末尾,如果没有找到则弹出提示框。最后,我们可以将该方法绑定到某个按钮或者快捷键上,以实现类似浏览器 Ctrl + F 的查找功能。 ### 回答2: 要实现浏览器Ctrl+F查找功能,可以使用JavaScript来操作浏览器的DOM(文档对象模型)。以下是实现该功能的步骤: 1. 监听用户按下Ctrl键和F键的事件。可以使用keydown或keyup事件来监听键盘按键。 ```javascript document.addEventListener('keydown', function(event) { if(event.ctrlKey && event.key === 'f') { // 在这里编写查找逻辑 } }); ``` 2. 创建一个输入框用于接收用户输入的查找关键字。可以使用document.createElement方法来创建该输入框,并设置其属性和样式。 ```javascript var searchInput = document.createElement('input'); searchInput.type = 'text'; searchInput.placeholder = '在页面中查找...'; searchInput.style.position = 'fixed'; searchInput.style.top = '20px'; searchInput.style.right = '20px'; searchInput.style.zIndex = '9999'; ``` 3. 在用户按下Ctrl+F时,在页面上显示创建的查找输入框,并将焦点设置在输入框上。 ```javascript document.addEventListener('keydown', function(event) { if(event.ctrlKey && event.key === 'f') { document.body.appendChild(searchInput); searchInput.focus(); } }); ``` 4. 监听输入框的输入事件,获取用户输入的查找关键字,并在页面中查找匹配的内容。 ```javascript searchInput.addEventListener('input', function() { var keyword = searchInput.value; var matches = window.find(keyword); // 处理匹配结果 }); ``` 5. 在处理匹配结果时,可以根据需要选择不同的方式来提示用户查找结果,例如可以将匹配的内容高亮显示或者在页面上显示查找结果的数量。 6. 当用户按下ESC键或者点击其他地方时,隐藏查找输入框并清除用户输入的查找关键字。 ```javascript document.addEventListener('keydown', function(event) { if(event.key === 'Escape') { clearSearch(); } }); document.addEventListener('click', function(event) { if(event.target !== searchInput) { clearSearch(); } }); function clearSearch() { document.body.removeChild(searchInput); searchInput.value = ''; } ``` 通过以上步骤,我们可以实现浏览器Ctrl+F查找功能,让用户在页面中方便地查找关键字并高亮显示匹配的内容。 ### 回答3: 要实现浏览器Ctrl + F查找功能,可以使用JavaScript来完成。以下是实现的步骤: 1. 监听键盘事件:使用addEventListener()函数在文档上添加一个键盘事件侦听器,以监听用户按下的按键事件。 2. 检测Ctrl + F组合键:在键盘事件侦听器中,检查event对象中的keyCode属性和ctrlKey属性,判断是否同时按下了Ctrl和F键。 3. 创建查找输入框:在页面上动态创建一个输入框元素,用于用户输入要查找的内容。 4. 获取输入内容:当用户输入完要查找的内容后,监听输入框的input事件,实时获取用户输入的内容。 5. 查找匹配文本:使用JavaScript的find()或者indexOf()等方法,在页面中查找匹配的文本。 6. 高亮匹配内容:找到匹配的文本后,可以使用addClass()函数为匹配的文本添加一个高亮样式,以提供可视化效果。 7. 清除高亮:当用户清除输入框的内容时,需要清除之前添加的高亮样式,保持页面的整洁。 8. 取消查找:如果用户关闭查找输入框或者按下Esc键,则取消查找功能,隐藏输入框和清除高亮样式。 以上是用JavaScript实现浏览器Ctrl + F查找功能的简单步骤。具体实现时,可以根据实际需求进行调整和优化。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值