var rng=document.body.createTextRange();
if(rng.findText(str))
{
rng.scrollIntoView();
}代码是让搜索到的字符串进入页面首显示。
现在想这样来实现:<h3>此部分内容想进入页面首显示</h3>
<h4>...</h4>
<table>
<tr>
<td>搜索内容咋这里</td>
</tr>
</table>就是不清楚如何由rng(在td标签中)定位到h3标签,然后再调用scrollIntoView()?

解决方案 »

  1.   

        var obj=document.getElementsByTagName("h3")[0];
        var rng=document.body.createTextRange();
        
        rng.moveToElementText( obj );
        rng.select();
        
        if(rng.findText("aa"))
        {
        rng.scrollIntoView();
        }
      

  2.   

    但问题是要搜索的内容是在<td></td>中,根据rng所在标签与h3标签的相对位置来定位。
      

  3.   

    由rng--->td--->tr--->table--->h4--->h3
      

  4.   

    <script>
    window.onload=function(){
        var obj=document.getElementsByTagName("h3")[0];
        var find=document.getElementsByTagName("td")[0];
        var rng=document.body.createTextRange();
        
        rng.moveToElementText( obj );
        rng.select();
        
        if(rng.findText(find.innerHTML))
        {
        rng.scrollIntoView();
        }
    }
    </script>
    <h3>aaaassaaaa</h3>
    <h4>...</h4>
    <table>
    <tr>
    <td>ss</td>
    </tr>
    </table>
      

  5.   

    谢谢shan1119。
    我前面之所以说需要通过相对位置来确定,是因为HTML文件结构像下面:<h3>aaaassaaaa</h3>
    <h4>...</h4>
    <table>
    <tr>
    <td>ss</td>
    </tr>
    </table>
    <h3>aaaassaaaa</h3>
    <h4>...</h4>
    <table>
    <tr>
    <td>ss</td>
    </tr>
    </table>
    <h3>aaaassaaaa</h3>
    <h4>...</h4>
    <table>
    <tr>
    <td>ss</td>
    </tr>
    </table>
    <h3>aaaassaaaa</h3>
    <h4>...</h4>
    <table>
    <tr>
    <td>ss</td>
    </tr>
    </table>所以说需要现在知道搜索的内容rng在TD中如何一步一步上推至h3.
    就好比说在一首诗中查找一句话,找到了,但你真正关心的是这首诗的题目,而不是找到的这一句。
    题目就相当于h3,那一句相当于td.不知道这样说是否好理解些。
      

  6.   

    <script>
    window.onload=function(){
        var obj=document.getElementsByTagName("h3");
        var find=document.getElementsByTagName("td");
        var rng=document.body.createTextRange();
        
        for(var i=0;i<find.length;i++){
           (function(){
                var index=i;
                find[index].onclick=function(){
                    rng.moveToElementText( obj[index] );
                    rng.select();
                    if(rng.findText(find[index].innerHTML)){
                       rng.scrollIntoView();
                    }
                }
           })();
        }
        
    }
    </script>
    <h3>aaaass1aaaa</h3>
    <h4>...</h4>
    <table>
    <tr>
    <td>ss1</td>
    </tr>
    </table>
    <h3>aaaass2aaaa</h3>
    <h4>...</h4>
    <table>
    <tr>
    <td>ss2</td>
    </tr>
    </table>
    <h3>aaaass3aaaa</h3>
    <h4>...</h4>
    <table>
    <tr>
    <td>ss3</td>
    </tr>
    </table>
    <h3>aaaass4aaaa</h3>
    <h4>...</h4>
    <table>
    <tr>
    <td>ss4</td>
    </tr>
    </table>
      

  7.   

    都不知道说啥好了。
    问题是h3中不包含td的内容。
    兄弟是不是觉得由td中rng上推至h3不好实现?
    兄弟再想想?
    我起初想的是
    rng的parentNode是tr,再parentNode是table.
    再previousSibling是h4,再previousSibling是h3,再scrollIntoView()实现。
    写来写去就是不行。
    我连基本语法都不怎么清楚。<h3>登鹳雀楼</h3>
    <h3>王之涣</h3>
    <table>
    <tr>
    <td>白日依山尽</td>
    <td>黄河入海流</td>
    <td>欲穷千里目</td>
    <td>更上一层楼</td>
    </tr>
    </table>网页中有很多这样的诗,我想找到哪首诗中含有“欲穷千里目”,找到了,想让“登鹳雀楼”调用scroolIntoView().
    兄弟你再想想。
      

  8.   

    <script>
    window.onload=function(){
        var find=document.getElementsByTagName("td");
        var rng=document.body.createTextRange();
        
        for(var i=0;i<find.length;i++){
           (function(){
                var index=i;
                find[index].onclick=function(){
                    var obj=find[index].parentNode.parentNode.parentNode.previousSibling.previousSibling
                    rng.moveToElementText( obj );
                    rng.select();
                    if(rng.findText(find[index].innerHTML)){
                       rng.scrollIntoView();
                    }
                }
           })();
        }
    }
    </script>
    <h3>aaaass1aaaa</h3>
    <h4>...</h4>
    <table>
    <tr>
    <td>ss1</td>
    </tr>
    </table>
    <h3>aaaass2aaaa</h3>
    <h4>...</h4>
    <table>
    <tr>
    <td>ss2</td>
    </tr>
    </table>
    <h3>aaaass3aaaa</h3>
    <h4>...</h4>
    <table>
    <tr>
    <td>ss3</td>
    </tr>
    </table>
    <h3>aaaass4aaaa</h3>
    <h4>...</h4>
    <table>
    <tr>
    <td>ss4</td>
    </tr>
    </table>
    td -> tr -> tbody -> table