学院首页>网页制作>HTML>指定选取textarea的特定行

指定选取textarea的特定行

作者: 来源: 添加时间:2006-5-25 18:12:40

通常状况下,大家都使采用判断来判断textarea控件中含有多少行,但是,有这么一种情况,就是没有使用回车,而是字符过宽而textarea自动换的行,很显然,上面那种方法就不可行了.

这里,封装了一个方法getTextRange(num, areaId),这个方法只需要传入textarea的id及其需要的行号,即可以返回指定行,为了灵活,这里没有返回指定行的文本,而是返回了指定行的一个trange对象,如果需要文本,只需调用trange对象的text属性即可.

 

<SCRIPT language="javascript">
/**
 * added by LxcJie 2004.7.16
 * 返回指定行的range对象
 * num为行号,areaId为textarea的id
 */
function getTextRange(num, areaId)
{
var range = document.all(areaId).createTextRange();
var rect = range.getClientRects();
var left = rect[0].left;
if(num > rect.length - 1 || num < 0)
  return;
if(num == 0)
{
var right = rect[0].right;

range.moveEnd("character",-range.text.length);  
while(range.offsetLeft + range.boundingWidth < right)
{
  range.expand("character");
}
return range;
}
else
{
  var right = rect[num].right;

var range = 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);
  return range;
}
}

function getText(num)
{
var range = getTextRange(num,"area")
if(range != null)
{
  alert(range.text);
  range.select();
}
}
</SCRIPT>
<TEXTAREA cols="50" rows="10" id="area">
客从东方来,衣上灞陵雨。
问客何为来,采山因买斧。
冥冥花正开,扬扬燕新乳。
昨别今已春,鬓丝生几缕。
</TEXTAREA><p>

<input type="button" onClick="getText(0)" value="选第一行">
<input type="button" onClick="getText(1)" value="选第二行">
<input type="button" onClick="getText(2)" value="选第三行">
<input type="button" onClick="getText(3)" value="选第四行">


站内搜索