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()?
调试欢乐多
var rng=document.body.createTextRange();
rng.moveToElementText( obj );
rng.select();
if(rng.findText("aa"))
{
rng.scrollIntoView();
}
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>
我前面之所以说需要通过相对位置来确定,是因为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.不知道这样说是否好理解些。
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>
问题是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().
兄弟你再想想。
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