Details see TextRange Object

解决方案 »

  1.   

    肯定不是正则,楼上误会了
    向两星的说的对,我手头只有js的手册,查不到textRange啊
    能给段代码吗?哪位大虾,或指点下到什么样的手册去查.
    最好代码,我现在急功近利呢
      

  2.   

    樓主,給個例子你,你自己做拆分字符串吧<input type=text id=txt1><input type=button value="go" onclick="go();"><script>
      function go(){
             //得到文本框的值
             var t = document.getElementById("txt1").value;
             //得到選中的值
    var r = document.selection.createRange().text;
             //拆分
             ...
      }
    </script>
      

  3.   

    参考:<input type=text id="box" value="大家今天好!">
    <input type=button onclick='selectText(box.value,2,box.value.length)' value='check' name='test3' ID="Button1">
    <script language=javascript>
    function selectText(str,sp,ep) 

    sp = parseInt(sp) 
    ep = parseInt(ep) if(isNaN(sp)||isNaN(ep)) 
    return; var rng = box.createTextRange(); 
    rng.moveEnd("character",-str.length) 
    rng.moveStart("character",-str.length) 
    rng.collapse(true); 
    rng.moveEnd("character",ep) 
    rng.moveStart("character",sp) 
    rng.select(); } 
    </script>
      

  4.   

    谢谢各位,我正在查看dhtml的手册.
    我的目的是这样,如果文本框的值是"abc",我要把b找出来(不是所有的b,所以不能用类似replace的命令),然后把b进行变换,比如编程D,然后,生成aDc,放回到原来的文本框中去,使得原来的文本框的值变成aDc.
    谢谢.
    对于楼上两位的例子,我看过了,正想办法找出选中部分的起始和结束部分.以便用类似substr的方法重组字符串.
    我是做后台处理的,对前台技术不熟,请指点.
      

  5.   

    replace只会匹配一次
    var str ="abcbaccb";
    str.replace("b","B");alert(str); //output “aBcbaccb”
      

  6.   

    涅磐的指点很好,我打算先用这种方法来试试,毕竟重复值出现的概率不大,在我的应用场合里.
    我最根本的目的是客户要求有些值(通过选中的方式得到)要在文本框里隐藏起来,但并没有删除.
    下面是我试着弄的一段代码,思路是在选中的文本两端加上关于隐藏的标签,没有得到我想要的效果,请大侠们指点.
    <html>
    <body>
    <input type=text id="box" value="大家今天好!">
    <input type=button onclick="tt()"  name='test2' value = 'tttt' ID="Button2">
    <script language=javascript>
    function  tt()
    {
    range = document.selection.createRange()
    //得到一个textRange对象
    var strSelected = range.text;
    strOri = document.getElementById('box').value;
    //得到box文本框的值
    strOri = strOri.replace(strSelected,"<span display = 'NONE'">+strSelected+"</span>"  );
    //上行的目的是要把选中的内容藏起来,但是没达到效果
    alert(strOri);
    }
    </script>
    </body>
    </html>
      

  7.   

    这是新版的代码,我无能为力了,现在
    <html>
    <body>
    <input type=text id="box" value="大家今天今天今天今天今天今天今天今天好!">
    <input type=button onclick="tt()"  name='test2' value = 'tttt' ID="Button2">
    <script language=javascript>
    function  tt()
    {
    range = document.selection.createRange()
    //得到一个textRange对象
    var strSelected = range.text;
    strOri = document.getElementById('box').value;
    //得到box文本框的值
    strOri = strOri.replace(strSelected,"<span display = 'NONE'">+strSelected+"</span>"  );
    //上行的目的是要把选中的内容藏起来,但是没达到效果
    //alert(strOri);
    document.getElementById('box').value = strOri;
    alert( document.getElementById('box').value );
    //里面出现了false字样,怎么回事啊?
    }
    </script>
    </body>
    </html>
      

  8.   

    <html>
    <body>
    <input type=text id="box" value="大家今天好!">
    <input type=button onclick="tt()"  name='test2' value = 'tttt' ID="Button2">
    <script language="javascript">
    function  tt()
    {
    range = document.selection.createRange()
    //得到一个textRange对象
    var strSelected = range.text;
    if(strSelected!="")
    {
    //strOri = document.getElementById('box').value;
        //alert(strOri);
        //得到box文本框的值
        //strOri = strOri.replace(strSelected,"<span display = 'NONE'">+strSelected+"</span>"  );
        //上行的目的是要把选中的内容藏起来,但是没达到效果
        //alert(strOri);
        range.text='liu';
        strOri = document.getElementById('box').value;
        alert(strOri);
    }
    }
    </script>
    </body>
    </html>
      

  9.   

    <html>
    <body>
    <input type=text id="box" value="我是谁?">
    <input type=button onclick="tt()"  name='test2' value = 'tttt' ID="Button2">
    <script language="javascript">
    function  tt()
    {
    range = document.selection.createRange()
    if(range.text!="")
        range.text='塞北的雪';
    }
    </script>
    </body>
    </html>
      

  10.   

    楼上的雪.
    我希望能把选中的文字用html标签或其它方法藏起来,但是那些内容实际上仍然在文本框里面.
    谢谢各位.
      

  11.   

    对我原来的思路而言,实际上问题已转化为如何在一个单元格(不用文本框了),把部分内容藏起来
    我还有一个变通的想法,就是在数据库里,我实际上是保存两个值,一个是完整的,一个是目前客户想要显示的.在网页上面分情况显示.
    原来的思路,需要解决下列静态html没有达到我预期效果的问题.
    <html>
    <body>

    <table>
    <tr>
    <td>
    啊啊<span width="0" display="NONE">哦哦</span>峨峨
    </td>
    </tr>
    </table>
    </body>
    </html>
      

  12.   

    <span width="0" style="display:none">
      

  13.   

    <html>
    <body>
    <input type=text id="box" value="我是谁?">
    <input type=hidden id="box2" value="">
    <input type=button onclick="tt()"  name='test2' value = 'tttt' ID="Button2">
    <script language="javascript">
    function  tt()
    {
    range = document.selection.createRange()
    if(range.text!="")
    {
        range.text='<span style=\'display:none\'' + range.text + '</span>';
        }
    }
    </script>
    </body>
    </html>
      

  14.   

    实现这样的效果 ,用简单的必须用一个div盖住 textarea ,textarea里面不能解析Html的
      

  15.   

    有道理,我以为雪的写法是转义符没写对呢
    我自己用table控件,写了一小段.能够找出选中内容,也能在直接写html的前提下隐藏代码,但是,试图用replace来达到那个效果,就失败了,我觉得是转义符的问题,哪位帮忙看看?
    <html>
    <body>

    <table>
    <tr>
    <td>
    啊啊<iframe width="0" display="NONE">哦哦</iframe>峨峨
    </td>
    <td  id='box'>
    大家今天好
    </td>
    </tr>
    </table>
    <input type=button onclick="tt()"  name='test2' value = 'tttt' ID="Button2">
    <script language="javascript">
    function  tt()
    {
    range = document.selection.createRange()
    //得到一个textRange对象
    var strSelected = range.text;
    alert(strSelected)
    strOri = document.getElementById('box').innerHTML;
    alert(strOri);
    strOri = strOri.replace(strSelected,"<iframe width = \"0\" display = \"NONE\"">+strSelected+"</iframe>"  );
    alert(strOri);

    // if(strSelected!="")
    // {
    //strOri = document.getElementById('box').value;
        //alert(strOri);
        //得到box文本框的值
        //strOri = strOri.replace(strSelected,"<span display = 'NONE'">+strSelected+"</span>"  );
        //上行的目的是要把选中的内容藏起来,但是没达到效果
        //alert(strOri);
        //range.text='liu';
        //strOri = document.getElementById('box').value;
        //alert(strOri);
    //}
    }
    </script>
    </body>
    </html>
      

  16.   

    用replace(并没有确定selection块在整个文本中的位置,如果有重复值,就不要替换了)和table的解决方案如下.
    <html>
    <body>
    <table>
    <tr>
    <td id = 'box'> 
    aabbcc
    </td>
    </tr>
    </table>
    <input type=hidden id="box2" value="">
    <input type=button onclick="tt()"  name='test2' value = 'tttt' ID="Button2">
    <script language="javascript">
    function  tt()
    {
    range = document.selection.createRange()
    if(range.text!="")
    {
        strOri = document.getElementById("box").innerHTML;
        strSelected = range.text;
        strHide     = '<span style=\'display:none\'>' + range.text + '</span>';
        strOri = strOri.replace(strSelected,strHide);    document.getElementById("box").innerHTML = strOri;
        alert(document.getElementById("box").innerHTML);
      }
    }</script>
    </body>
    </html>
      

  17.   

    我现在基本上倾向于用数据库里的两个字段来解决部分数据隐藏问题,关于此贴,主要是出于探讨目的.
    所以,非常希望各位能够帮忙找出selection块在整个文本中的位置,就没有办法吗?
    谢谢,雪,涅磐,向两星,无赖,烧鸡等
    呵呵
      

  18.   

    <SCRIPT>
    function aa()
    {
    var selRg = document.selection.createRange()
    var str = selRg.text
    var totalRg = document.all.oTxt.createTextRange()
    if(totalRg.inRange(selRg))
    {
    do 
    {
    var selText = selRg.text
    selRg.expand("character")
    }
    while(selRg.text.substring(selText.length, selRg.text.length) != "")

    var afterStr = selRg.text.substring(str.length, selRg.text.length)
    var beforeStr = totalRg.text.substring(0, totalRg.text.length - selRg.text.length)
    alert("前:" + beforeStr + "\n中:" + str + "\n后:" + afterStr)
    }
    }
    </SCRIPT><BUTTON onclick="aa()">Click here</BUTTON>
    abc
    <input ID=oTxt value="aaaaaabbbbbccccc">
      

  19.   

    selRg.expand("character")
    while(selRg.text.substring(selText.length, selRg.text.length) != "")
    哪位大侠解释下啊,我是不是太贪心无耻兼偷懒了?呵呵.
      

  20.   

    selRg.expand("character")我查到了怎么回事,把选择区域扩展一位while(selRg.text.substring(selText.length, selRg.text.length) != "")
    这个循环是什么用意?
      

  21.   

    我理解错了。
    这是 do  while 循环的条件。每次扩展选择区后,判断 最后扩展的一位是不是有效字符。若是空串,说明已经扩展到字符串末尾了。
      

  22.   

    晕,我把do   while  看成两个语句了.以后后面有个空循环,还纳闷怎么没有大括号呢.
    老了,呵呵.
    说了不该说的话.糊涂啊.
    ^_^