<textarea id="txt1" style="width:150;height:300">
11111111
22222222
33333333
44444444
55555555
66666666
77777777
88888888
</textarea>
<input type="button" value="DelRow" onclick="DelRow()"><br>
<script>
function DelRow()
{
//先把Textarea的数据分开.按\r\n,就是回车符分开.存成数组.
var str = txt1.value;
arrstr = str.split(/\r\n/);
for(var i=0;i<arrstr.length;i++)
{
arrstr[i]=arrstr[i].concat("\r")
}
//alert(arrstr)
/****** Start 取得当标所在的位置pos Start********/
txt1.focus();
var currentRange=document.selection.createRange();
var workRange=currentRange.duplicate();
txt1.select();
var allRange=document.selection.createRange();
var pos=0;
while(workRange.compareEndPoints("StartToStart",allRange)>0)
{
workRange.moveStart("character",-1);
pos++;
}
currentRange.select();
/****** End 取得当标所在的位置pos End**********/
//位置和每行的字符长度相减.当小于零时.取得i的值.也就是对应的数组下标.
for(var j=0;j<arrstr.length;j++)
{
pos-=arrstr[j].length;
if(pos<0){arrstr.baoremove(j);break;}
}
//合并数组.并显示.
txt1.value=arrstr.join("")
}
//删除数组元素.原数组上操作.
Array.prototype.baoremove = function(dx)
{
if(isNaN(dx)||dx>this.length){return false;}
this.splice(dx,1);
}
</script>
11111111
22222222
33333333
44444444
55555555
66666666
77777777
88888888
</textarea>
<input type="button" value="DelRow" onclick="DelRow()"><br>
<script>
function DelRow()
{
//先把Textarea的数据分开.按\r\n,就是回车符分开.存成数组.
var str = txt1.value;
arrstr = str.split(/\r\n/);
for(var i=0;i<arrstr.length;i++)
{
arrstr[i]=arrstr[i].concat("\r")
}
//alert(arrstr)
/****** Start 取得当标所在的位置pos Start********/
txt1.focus();
var currentRange=document.selection.createRange();
var workRange=currentRange.duplicate();
txt1.select();
var allRange=document.selection.createRange();
var pos=0;
while(workRange.compareEndPoints("StartToStart",allRange)>0)
{
workRange.moveStart("character",-1);
pos++;
}
currentRange.select();
/****** End 取得当标所在的位置pos End**********/
//位置和每行的字符长度相减.当小于零时.取得i的值.也就是对应的数组下标.
for(var j=0;j<arrstr.length;j++)
{
pos-=arrstr[j].length;
if(pos<0){arrstr.baoremove(j);break;}
}
//合并数组.并显示.
txt1.value=arrstr.join("")
}
//删除数组元素.原数组上操作.
Array.prototype.baoremove = function(dx)
{
if(isNaN(dx)||dx>this.length){return false;}
this.splice(dx,1);
}
</script>
<html><head>
<meta http-equiv="Content-Type" content="text/html; charset=gb2312">
<title>new page</title>
<script>
function doit(){
var rng = event.srcElement.createTextRange();
rng.moveToPoint(event.x,event.y);
rng.moveEnd("character",event.srcElement.value.length);
var xy=event.srcElement.value.length - rng.text.length;
var str=t1.innerText;
if(str.substring(xy-2,xy)=="\r\n"){
xy=xy-2;
}
var end=str.indexOf("\r\n",xy);
if(end<0){
end=str.length;
}
var start=str.substring(0,xy).lastIndexOf("\r\n");
if(start<0){
start=0;
}else{
start=start+2;
}
div1.innerText="该行的文字为:"+str.substring(start,end);
}
function a(){
t1.innerText="aaaaaaaaaaaaaaaaaaaaaa\r\nbbbbbbbbbbbbbbbbbbbbbbbb\r\ncccccccccccccccccccccc";
}
</script>
</head><body onload=a()>
<textarea id=t1 onclick="doit()" rows="5" cols="20"></textarea>
<div id=div1></div>
</body></html>
如
123123123 456
6666666666666666
8788888888888888
鼠标点在第一行5,6中间,会显示第一行和第二行的内容。
点5,6中间结果是: “123123123 456 6666666666666666”吗?
请确认123123123 456和6666666666666666之间有没有\r\n
如果有则作为2行处理,如果没有,则作为一行
确认方法:
取到textarea的innerText
var str=document.getElementById("t1").innerText;
var firstRow=str.split("\r\n")[0];
alert(firstRow);//若结果与这里相同,证明我的代码是对的