createTextRange问题.
JS:
<script language= "javascript ">
function ss()
{
var mom_value = document.getElementById( 'v_name ');
var tt0_value = mom_value.createTextRange();
var tt1_value = mom_value.createTextRange();
var tt2_value = mom_value.createTextRange();
var re = tt0_value.getClientRects();
var t = re.length;
for(var i=0;i <t;i++)
{
tt2_value.moveToPoint(re[i].left,re[i].top);
tt1_value.setEndPoint( "StartToStart ", tt2_value);
tt2_value.moveToPoint(re[i].left,re[i].bottom);
tt1_value.setEndPoint( "EndToEnd ", tt2_value);
alert(tt1_value.text)
}
}
</script>
body
<textarea style= "WIDTH:300px " name= "v_name " rows= "10 " cols= "60 "> </textarea> <input type= "button " onclick= "ss() " value= "点点 ">
如果输入N行,只会 alter出N-1行的值,为什么取不到最后一行的值?求高人解答,在线等。
------解决方案--------------------for(var i=0;i <t+1;i++)
这样能全显示么?
------解决方案--------------------问题很显然,用不着去试这试那
最后一行显示不出来,肯定与换行符有关
tt2_value.moveToPoint(re[i].left,re[i].top);//当前行的起始位置
tt1_value.setEndPoint( "StartToStart ", tt2_value);
tt2_value.moveToPoint(re[i].left,re[i].bottom);//下一行的起始位置
tt1_value.setEndPoint( "EndToEnd ", tt2_value);
alert(tt1_value.text)
这样,如果不在最后一行,拿到的数据是没有问题的
但如果是最后一行
tt2_value.moveToPoint(re[i].left,re[i].bottom);//下一行的起始位置
由于没有下一行,所以得到的仍然是 "当前行的起始位置 "
自然拿到的数据为空
解决方法:
将
tt2_value.moveToPoint(re[i].left,re[i].bottom);//下一行的起始位置
换成
tt2_value.moveToPoint(re[i].right,re[i].top);//当前行的结束位置
------解决方案--------------------楼上正解。