如何选中滚动文本框从某一行到某一行?
//========================//功能: 滚动文本框精确位置定位//输入参数:// self
滚动文本框对象// _startLine
开始行数// _endLine
结束行数// _startPoint 开始行数的开始位置// _endPoint
结束行数的结束位置//调用方法:// ①同一行,从开始位置到结束位置://
selToLinePoint(self, 2, 2, 0/1, 0)// ②不同一行,从某一开始位置到结束位置://
selToLinePoint(self, 2, 4, 3, 0)// ③不同一行,从某一开始位置到某一结束位置://
selToL...全部
//========================//功能: 滚动文本框精确位置定位//输入参数:// 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 _startPoint){
st = st + _startPoint;
}else{
var _rightTextLen = 0;
for (var m = 0; m 0){
var laLineLen = conts[_endLine] - conts[_endLine -1];
en = en - laLineLen + _endPoint;
}
}
texpreEnd = text。
substr(0, en)。replace(/\r/g,"") //自textarea内容的开头至选择结束点前的字串,由于moveEnd方法将\r\n视为一个字符,需要修正计数
en = texpreEnd。
length
var _endX = en - st;
oTR。moveEnd("character", _endX);
oTR。select(); } }。收起