通常状况下,大家都使采用判断来判断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; } } [1] [2] 下一页
|