JavaScript选定textarea的特定行[转]

转至: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="选第四行">

相关推荐