<textarea id="ice" rows="8" cols="30">
我现在要做的是,选择 从直观行的第3行 到 第4 行,谢谢!
我现在要做的是,选择 从直观行的第3行 到 第4 行,谢谢!
我现在要做的是,选择 从直观行的第3行 到 第4 行,谢谢!
我现在要做的是,选择 从直观行的第3行 到 第4 行,谢谢!
我现在要做的是,选择 从直观行的第3行 到 第4 行,谢谢!
</textarea>
从 <input type="text" style="width:20px" id="from">
到 <input type="text" style="width:20px" id="to"/>
<input type="button" onclick="selectRow(from.value,to.value)" value="选择"/>
<script language="javascript">
<!--
function selectRow(from,to)
{
if(isNaN(from) || isNaN(to) || from > to ) return false;
var rng = document.getElementById("ice").createTextRange();
var sel = document.body.createTextRange();
var tmp = document.body.createTextRange();
var rects = rng.getClientRects();
if(rects[from-1] && rects[to-1])
{
tmp.moveToPoint(rects[from-1].left,rects[from-1].top);
sel.setEndPoint('StartToStart',tmp);
tmp.moveToPoint(rects[to].left,rects[to].top);
sel.setEndPoint('EndToEnd',tmp);
sel.select();
}

}
//-->
</script>

解决方案 »

  1.   

    to:ice_berg16(寻梦的稻草人)  有的一点问题,不能选择最后一行;
    超过最后一行 ,请给个alert提示;
      

  2.   

    你一行最多有多少个字符?比如说30个,那你就取字符串(即textarea的值)的第91——120位。
      

  3.   

    <textarea id="ice" rows="8" cols="30">
    我现在要做的是,选择 从直观行的第3行 到 第4 行,谢谢!
    我现在要做的是,选择 从直观行的第3行 到 第4 行,谢谢!
    我现在要做的是,选择 从直观行的第3行 到 第4 行,谢谢!
    我现在要做的是,选择 从直观行的第3行 到 第4 行,谢谢!
    我现在要做的是,选择 从直观行的第3行 到 第4 行,谢谢!
    </textarea>
    从 <input type="text" style="width:20px" id="from">
    到 <input type="text" style="width:20px" id="to"/>
    <input type="button" onclick="selectRow(from.value,to.value)" value="选择"/>
    <script language="javascript">
    <!--
    function selectRow(from,to)
    {
    if(isNaN(from) || isNaN(to) || parseInt(from) > parseInt(to) ){return false;}
    var rng = document.getElementById("ice").createTextRange();
    var sel = document.body.createTextRange();
    var tmp = document.body.createTextRange();
    var rects = rng.getClientRects();
    if(rects[from-1] && rects[to-1])
    {
    tmp.moveToPoint(rects[from-1].left,rects[from-1].top);
    sel.setEndPoint('StartToStart',tmp);
    tmp.moveToPoint(rects[to-1].right,rects[to-1].top);
    sel.setEndPoint('EndToEnd',tmp);
    sel.select();
    }
    else
    {
    alert("超出范围");
    }
    }
    //-->
    </script>