在指定的div中搜索内容,并滚动显示到当前搜索到的内容处
我想要的是页面中有个带滚动条的div对象,里面有很多内容,想要用js搜索到div中的某个字符串内容,然后将div的滚动条滚动到搜索到的内容处显示,自动定位。
先是查找页面中的内容,然后将找到的内容创建textRange,然后找到内容的上层容器对象,利用JQuery的功能,将这个上层窗口对象位置和div位置运算一下后,把div的滚动条滚动到这个容器位置。
//在指定的div对象中搜索内容,并定位滚动div的滚动条到搜索
//在整个文本中查找第几个,从0开始
var nextIndex = ;
//上一次需要查找的字符串
var searchValue = ''; function findInPage(searchText) { //在指定的div对象中搜索内容,并定位滚动div的滚动条到搜索内容位置显示
//判断搜索字符是否为空
if (!searchText) {
alert('请输入要搜索的内容');
return;
}
var textvalue = searchText;
var divObj = document.getElementById("div"); //判断搜索条件是否已经改变
if (searchText && searchText != searchValue && nextIndex > ) {
searchValue = searchText;
nextIndex = ;
} else {
searchValue = searchText;
} if (document.all) {
txt = document.body.createTextRange();
//搜索str
var found = '';
//查找第nextIndex个的字符串。之所以要用循环,是因为TextRange对象每次都是新生成的,所以查找初始位置每次都会还原。那么要查找第n次出现的字符串,就需要调用findText()方法多次,且每次查找都要重新设置开始位置和结束位置。
for (i = ; i <= nextIndex && (found = txt.findText(searchValue)) == true; i++) {
txt.moveStart("character", );
txt.moveEnd("textedit");
}
//选中本次查找的字符串
if (found) {
//这里设置为-1,表示为倒序查找。之所以要这样做,是因为此时我们已经查找到了第nextIndex出现的字符串,那么此时如果设置为倒序查找,且将开始位置设置为末尾,那么此时调用findText()方法查找,则会刚好查到我们上一次查到的字符串
txt.moveStart("character", -);
txt.findText(searchValue);
txt.select();
//滚动屏幕到合适位置
//txt.scrollIntoView(false);
var container = $(divObj);
var rng = document.selection.createRange();
var scrollTo = $(rng.parentElement());
//var scrollTo = $('#bfbf'); container.scrollTop(
scrollTo.offset().top - container.offset().top + container.scrollTop()
);
nextIndex++;
} else {
//循环查找
if (nextIndex > ) {
nextIndex = ;
findInPage(divObj, searchValue);
} else {
alert('没有搜索到“' + textvalue + '”');
}
}
} else {
//循环查找
window.find(searchValue, false, true);
}
}
在指定的div中搜索内容,并滚动显示到当前搜索到的内容处的更多相关文章
- IE8下div中2个button仅仅显示一个
IE8下div中2个button仅仅显示一个,代码例如以下: <div id="adviceType" style="display: none;" &g ...
- Div内部的内容超出部分显示省略号(仅仅只有一行内容)
效果如下:
- html如何让label在div中的垂直方向居中显示?
设置label的行高 line-height 和div的高度一致即可.
- listView获取item的Edit内容,listView中的edit内容在滚动时自动赋值了前面的内容
Today I am going to explain how to create a ListView with EditText and why will we need a TextWatche ...
- vc 在edit控件中动态插入数据滚动显示
内存从网上论坛摘抄整理 思路:给控件设置多行属性,设置垂直滚动条,Auto Vscroll设置为true,放入文本后把插入点设置到末尾 pEdit->LineScroll(pEdit->G ...
- bootstrap表格固定表头,表格内容滚动条滚动显示
直接贴代码--- <!DOCTYPE html> <html> <head> <meta charset="UTF-8"> < ...
- div中粘贴图片并上传服务器 div中拖拽图片文件并上传服务器
应用简介:此文主要是描述如何在前端div中直接ctrl+v 粘贴图片,并上传到服务器,包括拖拽图片文件到div中 应用场景描述:用QQ或者其它切图软件截图,在指定的div中ctrl+v 粘贴并显示,点 ...
- 如何让div中的文字只显示一行,多余的文字隐藏并加上省略号(超链接形式)
写页面的时候遇到了一个小小的问题,如何让div中一行超链接文字只显示一行,多余的文字隐藏并加上省略号,悬浮时隐藏的文字显示出来?解决问题时发现了css3的一个新标签 text-overflow , ...
- javascript怎么获取指定url网页中的内容
javascript怎么获取指定url网页中的内容 一.总结 一句话总结:推荐jquery中ajax,简单方便. 1.js能跨域操作么? javascript出于安全机制不允许跨域操作的. 二.用ph ...
随机推荐
- Java泛型学习笔记 - (六)泛型的继承
在学习继承的时候, 我们已经知道可以将一个子类的对象赋值给其父类的对象, 也就是父类引用指向子类对象, 如: Object obj = new Integer(10); 这其实就是面向对象编程中的is ...
- kendo-ui学习笔记——题记
1.Kendo UI基于最新技术HTML5.CSS3和JavaScript标准设计开发.2.官方网址:http://www.kendoui.com/3.API网上查阅英文版网址:http://docs ...
- 计算机●编程语言●JAVA
<Java编程思想(第4版)> 2016-04-27 12:38 ☆ 对JAVA知识面比较全的介绍.但也只是介绍,没有进入主题好好分析透彻.所以适合有几年工作经验的java码农(虽然 ...
- Go语言并发编程示例 分享(含有源代码)
GO语言并发示例分享: ppt http://files.cnblogs.com/files/yuhan-TB/GO%E8%AF%AD%E8%A8%80.pptx 代码, 实际就是<<Go ...
- jQuery从无知到无所不知
说明: 本文以读书笔记的方式整理jQuery的重要知识点,言简意赅,一语中的,删繁就简,引人入胜. 本文先对jQuery强大的功能作一系统的介绍,再详细整理jQuery的选择器.过滤器.DOM操作.事 ...
- 2048游戏C语言代码
如果程序里面有错误,希望大家能够批评指正! #include<stdio.h> #include<stdlib.h> #include<conio.h> #incl ...
- GFW-新闭关锁国政策
当八国联军的炮火轰开古老的北京城门,不知道腐朽的清政府是否依旧认为闭关锁国政策是一项正确的国策?清政府实施闭关锁国政策基于2点考虑:1.安全,国家安全,不想让这些洋鬼子来捣乱.2.我天朝大国,根本无需 ...
- 2016-12-21(1)Git常用命令总结
友情链接:http://www.cnblogs.com/mengdd/p/4153773.html
- django开发过程中静态文件路径配置
在demo项目的settings.py文件中找到 STATICFILES_DIRS STATICFILES_DIRS = ( 'static', #这个名字是项目根目录下的文件夹名称,注意后面有逗号 ...
- software_testing_work3_question1
package com.Phantom; import java.io.IOException; import java.util.Scanner; public class Work3_1 { /* ...