如何选中滚动文本框从某一行到某一行
来源:互联网 发布:有卖淘宝号的吗 编辑:程序博客网 时间:2024/06/05 06:38
//========================
//功能: 滚动文本框精确位置定位
//输入参数:
// self 滚动文本框对象
// _startLine 开始行数
// _endLine 结束行数
// _startPoint 开始行数的开始位置
// _endPoint 结束行数的结束位置
//调用方法:
// ①同一行,从开始位置到结束位置:
// selToLinePoint(self, 2, 2, 0/1, 0)
// ②不同一行,从某一开始位置到结束位置:
// selToLinePoint(self, 2, 4, 3, 0)
// ③不同一行,从某一开始位置到某一结束位置:
// selToLinePoint(self, 2, 4, 3, 9)
//========================
function selToLinePoint(self, _startLine, _endLine, _startPoint, _endPoint, _len){
var src = self;
var oTR = self.createTextRange();
var text = self.innerText;
var textLength = text.length;
conts = [0];
startx = src.createTextRange().getClientRects()[0].left;
starty = src.createTextRange().getClientRects()[0].top;
stepy = 3; //光标向下移动的步长,不能大于textarea中的字高
currentScr = 0; //当前滚动条位置
stepScr = 30; //滚动条向下滚动的步长,不能大于textarea的高度
while(1){
src.scrollTop = currentScr
currenty = starty
while(1){ //光标从textarea内容的开头开始向下移动,遍历各行,在conts[]中记下各换行位置
oTR.moveToPoint(startx, currenty)
oTR.moveEnd("character", textLength)
var _oTR_Line_Length = oTR.text.length;
cont = textLength - _oTR_Line_Length;
if (cont >= textLength){
break
}
if (cont>conts[conts.length - 1]){
conts[conts.length] = cont
}
currenty += stepy
}
if (currentScr >= src.scrollHeight){
break
}
currentScr += stepScr;
}
if (_endLine == "")
_endLine = _startLine;
_startLine = parseInt(_startLine);
_endLine = parseInt(_endLine);
if (isFinite(_startLine) && isFinite(_endLine) && _startLine > 0 && _endLine > 0){
//检查参数有效性
if (_startLine > conts.length || _endLine > conts.length){
alert("总共只有" + conts.length + "行,请检查后重试。");
return;
}
//如果结束行在开始行之前,强行调整参数
if (_endLine < _startLine){
_endLine = _startLine;
end.value = _endLine;
}
src.scrollTop = 0;
oTR.moveToPoint(startx, starty); //光标回到textarea内容的开头
st = conts[_startLine - 1];
if (st > _startPoint){
st = st + _startPoint;
}else{
var _rightTextLen = 0;
for (var m = 0; m < conts.length; m++){
if (conts[m] < _startPoint){
_rightTextLen = _startPoint - conts[m];
st = _startPoint - _rightTextLen;
if (_endLine == _startLine){
_endLine++;
}
}else{
break;
}
}
if (st + _rightTextLen < textLength){
st = st + _rightTextLen;
}
}
texpreStart = text.substr(0, st);
texpreStart = text.substr(0, st).replace(/r/g, ""); //自textarea内容的开头至选择起点前的字串,由于moveStart方法将rn视为一个字符,需要修正计数
st = texpreStart.length;
oTR.moveStart("character", st);
en = textLength;
if (_endLine < conts.length){
en = conts[_endLine];
if (_endPoint > 0){
var laLineLen = conts[_endLine] - conts[_endLine -1];
en = en - laLineLen + _endPoint;
}
}
texpreEnd = text.substr(0, en).replace(/r/g,"") //自textarea内容的开头至选择结束点前的字串,由于moveEnd方法将rn视为一个字符,需要修正计数
en = texpreEnd.length
var _endX = en - st;
oTR.moveEnd("character", _endX);
oTR.select();
}
}
- 如何选中滚动文本框从某一行到某一行
- 滚动表格到某一行
- 选中DataGridView控件的某一行并将其位置滚动到当前选中行
- jquery 选中某一行
- HorizontalScrollView初始如何滚动到某一值
- 选中DataGrid的某一行
- CListCtrl 取消选中某一行
- java JTextArea 定位到指定行 选中某一行
- java JTextArea 定位到指定行 选中某一行
- Emeditor如何跳转到某一行
- collectionView偏移到某一组某一行
- listview选中某一行,选中行高亮显示
- 如何判断GridView控件的某一行是否被选中
- 如何判断GridView控件的某一行是否被选中
- IOSTableView 滚动到最后一行或某一行
- DevExpress: ASPxGridView 后台设定选中某一行
- winform datagridview 自动选中某一行
- C# DataGridView 光标选中某一行
- SQL Server中删除重复数据的几个方法
- 递归删除与给定的文件名不符的文件
- 神经网络
- 发狂想曲:如何在开源Java下生存
- 关于提高自己JAVA水平的十大技术
- 如何选中滚动文本框从某一行到某一行
- Java Web Start入门基础教程
- 从一个表读取数据插入到另一个表中(INSERT INTO)
- Java对象的强、软、弱和虚引用
- JAVA中浅复制与深复制
- struts+spring+hibernate+tiles+proxool(一)
- 使用SimpleDateFormat必须注意的问题
- 我的网站开通了.
- 用JPDA轻松调试Java代码