我要替换的是 <div id="testabc"></div>之间的内容,现在替换的是body之间的内容,谁帮我改一下啊?<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<HTML>
 <HEAD>
  <TITLE> New Document </TITLE>
  <META NAME="Generator" CONTENT="EditPlus">
  <META NAME="Author" CONTENT="">
  <META NAME="Keywords" CONTENT="">
  <META NAME="Description" CONTENT="">
 </HEAD>
 <BODY>
 <body id="myBody">
<p>测试诺基亚5800XM那如果写成5800呢?不行吗?再来一个5800XM循环避免干扰下面的使用介绍,多个关键词是否混乱呢?再看看5800XM大写小写呢5800xm。</p>
<p>这个广告代码的优点有,我们还是把它扩号起来看看[优点]:完全自定义你的广告,或各种用途。</p>
<p>是否想看看小小的广告代码还有啥特色,变颜色。如手机家园。——手机家园是手机爱好者俱乐部,我们倡导分享手机的故事~交友,娱乐,玩游戏。</p>
<p>差点忘记,手机窝的手机大全频道,手机宝典频道,以及爱下载 ——只收录免费的,精品的手机软件,手机主题,手机游戏。</p>
<div id="testabc">
<p>完了,再写下去你非得说我在做广告啦。</p>
<p>其实做广告很轻松,你现在可以去折腾啦,祝你成功,如果改的更棒,欢迎拿上来分享。</p>
<p>&nbsp;</p>
</div>
<p>1.做自己的点睛广告,爱下载做自己的文中广告,做自己的自定义关键词广告。如果你做淘宝客,或者是搞商业,非常有搞头的啦~链接个商品简介,卖的不要太火,越说越离谱啦</p>
<p>2.哎,自己的想咋整就咋整,</p>
<p>3.我不想告诉你,但请你看下本演示页源码(调用文件是放在< / html >标签下方,建议放在最后——即不影响网站加载速度,又不影响个性化广告)——免得有些人说不能用,不显示广告等!!!切记</p>
</div>
<p>&nbsp;</p>
<SCRIPT LANGUAGE="JavaScript">
<!--
var keywords = [
["爱下载","font-weight: bold;border-bottom:#cccccc 1px dotted;text-decoration:none;color:#0e3987;","",""],
["[优点]","border-bottom:#f10b00 1px dotted;text-decoration:none;","",""],
["做广告很轻松","border-bottom:#f10b00 1px dotted;text-decoration:none;","",""],
];
//v1.9.3 gbk
var bIE = (navigator.appName.indexOf("Microsoft") != -1);
var documentObj = document.compatMode=="CSS1Compat"?document.documentElement:document.body;
var tID = null;
function filterNode(Node) {
    if (Node.tagName=="IMG" || Node.tagName=="A" ||  Node.tagName=="SCRIPT" || Node.tagName== "OBJECT")    
        return false;
    var pNode = Node.parentNode;
    while (pNode.tagName != "BODY") {
        if (pNode.tagName=="IMG" || pNode.tagName=="A" ||  pNode.tagName=="SCRIPT" || pNode.tagName=="OBJECT")    
            return false;
        pNode = pNode.parentNode;
    }
    return true;
};
function replaceKeyword(id, keyword, css) {
var isF = 0;
if (bIE) {
        var textRange = document.body.createTextRange();
while (textRange.findText(keyword)) {
if(isF>1){
break;
}
var parentNode = textRange.parentElement();
if (filterNode(parentNode)) {
var kwAnchor = '<a href="'+ keywords[id][3] +'" target="_blank" style="'+ css +'" onmouseover="window.clearTimeout(tID);" onmouseout="tID=window.setTimeout(\'\',1500);">'+ keyword +'</a>';
textRange.pasteHTML(kwAnchor);
//break;
isF++;
}
textRange.collapse(false);
}
} else {
Accept_Node = function (node) {
if (node.tagName == "IMG" || node.tagName == "A" || node.tagName == "FORM" || node.tagName == "OBJECT" || node.tagName == "SCRIPT") {
return NodeFilter.FILTER_REJECT;
} else {
return NodeFilter.FILTER_ACCEPT;
}
};
var TreeWalker = document.createTreeWalker(document.body, NodeFilter.SHOW_ELEMENT | NodeFilter.SHOW_TEXT, Accept_Node, false);
var vNodes = new Array();
var range = document.createRange();
while (cNode = TreeWalker.nextNode()) {
if (cNode.nodeValue != null) {
vNodes[vNodes.length] = cNode;
}

for (var i=0; i < vNodes.length; i++) {
if(isF>1){
break;
}
var key = vNodes[i].nodeValue;
var pos = key.indexOf(keyword);
if (pos != -1) {
range.selectNode(vNodes[i]);
range.setStart(vNodes[i], pos);
range.setEnd(vNodes[i], range.startOffset + keyword.length);
range.deleteContents();
var nNode = document.createElement("span");
ArchorTag = '<a href="'+ keywords[id][3] +'" target="_blank" style="'+ css +'" onmouseover="window.clearTimeout(tID);" onmouseout="tID=window.setTimeout(\'\',1500);">'+ keyword +'</a>';
nNode.innerHTML = ArchorTag;
range.insertNode(nNode);
//break;
isF++;
}
}
}
};
function hwInit(){
var keyword;
for(var i=0; keyword=keywords[i]; i++){
replaceKeyword(i, keyword[0], keyword[1]);
}
};
hwInit();
//-->
</SCRIPT>
</body>
</html>
我在上面放了三个关键词,现在因为替换了body之间的,所以三个关键词相同的都带上了链接了,我只要testabc之间的内容,所以只有“做广告很轻松”这个关键词会带上链接。怎么搞?

解决方案 »

  1.   

    http://bbs.blueidea.com/thread-2955119-1-1.html这里的代码可以运行,也是我发的。大家看看
      

  2.   

    你程序上面有连个BODY,你是不是考虑用别的标签看看。
      

  3.   

    没细看你的代码,弄了个偷懒的方法,不知道复合不符合你的要求<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN"> 
      <HTML> 
       <HEAD> 
        <TITLE> New Document  </TITLE> 
        <META NAME="Generator" CONTENT="EditPlus"> 
        <META NAME="Author" CONTENT=""> 
        <META NAME="Keywords" CONTENT=""> 
        <META NAME="Description" CONTENT=""> 
       </HEAD> 
       <BODY> 
       <body id="myBody"> 
      <p>测试诺基亚5800XM那如果写成5800呢?不行吗?再来一个5800XM循环避免干扰下面的使用介绍,多个关键词是否混乱呢?再看看5800XM大写小写呢5800xm。 </p> 
      <p>这个广告代码的优点有,我们还是把它扩号起来看看[优点]:完全自定义你的广告,或各种用途。 </p> 
      <p>是否想看看小小的广告代码还有啥特色,变颜色。如手机家园。——手机家园是手机爱好者俱乐部,我们倡导分享手机的故事~交友,娱乐,玩游戏。 </p> 
      <p>差点忘记,手机窝的手机大全频道,手机宝典频道,以及爱下载 ——只收录免费的,精品的手机软件,手机主题,手机游戏。 </p>   <div id="testabc"> 
      <p>完了,再写下去你非得说我在做广告啦。 </p> 
      <p>其实做广告很轻松,你现在可以去折腾啦,祝你成功,如果改的更棒,欢迎拿上来分享。 </p> 
      <p>&nbsp; </p> 
      </div>   <p>1.做自己的点睛广告,爱下载做自己的文中广告,做自己的自定义关键词广告。如果你做淘宝客,或者是搞商业,非常有搞头的啦~链接个商品简介,卖的不要太火,越说越离谱啦 </p> 
      <p>2.哎,自己的想咋整就咋整, </p> 
      <p>3.我不想告诉你,但请你看下本演示页源码(调用文件是放在 < / html >标签下方,建议放在最后——即不影响网站加载速度,又不影响个性化广告)——免得有些人说不能用,不显示广告等!!!切记 </p> 
      </div> 
      <p>&nbsp; </p> 
      <SCRIPT LANGUAGE="JavaScript"> 
      <!-- 
      var keywords = [ 
     ["爱下载","font-weight: bold;border-bottom:#cccccc 1px dotted;text-decoration:none;color:#0e3987;","",""], 
     ["[优点]","border-bottom:#f10b00 1px dotted;text-decoration:none;","",""], 
     ["做广告很轻松","border-bottom:#f10b00 1px dotted;text-decoration:none;","",""], 
     ]; 
     //v1.9.3 gbk 
     var bIE = (navigator.appName.indexOf("Microsoft") != -1); 
     var documentObj = document.compatMode=="CSS1Compat"?document.documentElement:document.body; 
     var tID = null; 
     function filterNode(Node) { 
         if (Node.tagName=="IMG" || Node.tagName=="A" ||  Node.tagName=="SCRIPT" || Node.tagName== "OBJECT")     
             return false; 
         var pNode = Node.parentNode; 
         while (pNode.tagName != "BODY") { 
             if (pNode.tagName=="IMG" || pNode.tagName=="A" ||  pNode.tagName=="SCRIPT" || pNode.tagName=="OBJECT")     
                 return false; 
             pNode = pNode.parentNode; 
         } 
         return true; 
     }; 
     function replaceKeyword(id, keyword, css) {
     
    //--------------------------------------------------------
    var divhtml  = document.getElementById("testabc").innerHTML;
    var bodyhtml = document.body.innerHTML;
    document.body.innerHTML = divhtml;
    //---------------------------------------------------------
      var isF = 0; 
      if (bIE) { 
             var textRange = document.body.createTextRange(); 
      while (textRange.findText(keyword)) {  
      if(isF>1){ 
      break; 
      } 
      var parentNode = textRange.parentElement(); 
      if (filterNode(parentNode)) { 
      var kwAnchor = ' <a href="'+ keywords[id][3] +'" target="_blank" style="'+ css +'" onmouseover="window.clearTimeout(tID);" onmouseout="tID=window.setTimeout(\'\',1500);">'+ keyword +' </a>'; 
      textRange.pasteHTML(kwAnchor); 
      //break; 
      isF++; 
      } 
      textRange.collapse(false); 
      } 
      } else { 
      Accept_Node = function (node) { 
      if (node.tagName == "IMG" || node.tagName == "A" || node.tagName == "FORM" || node.tagName == "OBJECT" || node.tagName == "SCRIPT") { 
      return NodeFilter.FILTER_REJECT; 
      } else { 
      return NodeFilter.FILTER_ACCEPT; 
      } 
      }; 
      var TreeWalker = document.createTreeWalker(document.body, NodeFilter.SHOW_ELEMENT | NodeFilter.SHOW_TEXT, Accept_Node, false); 
      var vNodes = new Array(); 
      var range = document.createRange(); 
      while (cNode = TreeWalker.nextNode()) { 
      if (cNode.nodeValue != null) { 
      vNodes[vNodes.length] = cNode; 
      } 
      }  
      for (var i=0; i  < vNodes.length; i++) { 
      if(isF>1){ 
      break; 
      } 
      var key = vNodes[i].nodeValue; 
      var pos = key.indexOf(keyword);  
      if (pos != -1) { 
      range.selectNode(vNodes[i]); 
      range.setStart(vNodes[i], pos); 
      range.setEnd(vNodes[i], range.startOffset + keyword.length); 
      range.deleteContents(); 
      var nNode = document.createElement("span"); 
      ArchorTag = ' <a href="'+ keywords[id][3] +'" target="_blank" style="'+ css +'" onmouseover="window.clearTimeout(tID);" onmouseout="tID=window.setTimeout(\'\',1500);">'+ keyword +' </a>'; 
      nNode.innerHTML = ArchorTag; 
      range.insertNode(nNode); 
      //break; 
      isF++; 
      }  
      } 
      } 
    //-------------------------------------------------
    document.body.innerHTML = bodyhtml.replace(divhtml,document.body.innerHTML);
    //---------------------------------------------------- }; 
     function hwInit(){ 
      var keyword; 
      for(var i=0; keyword=keywords[i]; i++){ 
      replaceKeyword(i, keyword[0], keyword[1]); 
      } 
     }; 
     hwInit(); 
     //--> 
      </SCRIPT> 
      </body> 
      </html>
      

  4.   

    document.getElementById("testabc").innerHTML
    用replace来替换就好了,不用这么麻烦吧
      

  5.   

    fandelei1982 的就是我要的效果。你的方法真简单啊把中间的代码都省去了。。谢谢啊。
      

  6.   

    document.body.innerHTML = bodyhtml.replace(divhtml,document.body.innerHTML);
    换为document.getElementById("testabc").innerHTML = bodyhtml.replace(divhtml,document.getElementById("testabc").innerHTML);