javaer 2011-07-22
转至:http://school.cnd8.com/javascript/jiaocheng/50984.htm
通常状况下,大家都使采用判断来判断textarea控件中含有多少行,但是,有这么一种情况,就是没有使用回车,而是字符过宽而textarea自动换的行,很显然,上面那种方法就不可行了.
这里,封装了一个方法getTextRange(num,areaId),这个方法只需要传入textarea的id及其需要的行号,即可以返回指定行,为了灵活,这里没有返回指定行的文本,而是返回了指定行的一个trange对象,如果需要文本,只需调用trange对象的text属性即可.
<SCRIPTlanguage="javascript">
/**
*addedbyLxcJie2004.7.16
*返回指定行的range对象
*num为行号,areaId为textarea的id
*/
functiongetTextRange(num,areaId)
{
varrange=document.all(areaId).createTextRange();
varrect=range.getClientRects();
varleft=rect[0].left;
if(num>rect.length-1||num<0)
return;
if(num==0)
{
varright=rect[0].right;
range.moveEnd("character",-range.text.length);
while(range.offsetLeft+range.boundingWidth<right)
{
range.expand("character");
}
returnrange;
}
else
{
varright=rect[num].right;
varrange=getTextRange(num-1,areaId);
range.moveStart("character",range.text.length+1);
while(range.offsetLeft+range.boundingWidth<right)
{
range.expand("character");
}
if(range.offsetLeft>left)
range.moveStart("character",-1);
returnrange;
}
}
functiongetText(num)
{
varrange=getTextRange(num,"area")
if(range!=null)
{
alert(range.text);
range.select();
}
}
</SCRIPT>
<TEXTAREAcols="50"rows="10"id="area">
客从东方来,衣上灞陵雨。
问客何为来,采山因买斧。
冥冥花正开,扬扬燕新乳。
昨别今已春,鬓丝生几缕。
</TEXTAREA><p>
<inputtype="button"onClick="getText(0)"value="选第一行">
<inputtype="button"onClick="getText(1)"value="选第二行">
<inputtype="button"onClick="getText(2)"value="选第三行">
<inputtype="button"onClick="getText(3)"value="选第四行">