我刚才在php版块发了一个帖子,http://topic.csdn.net/u/20091227/16/9a7e4255-7e38-4e67-b6b0-8323bedc157e.html?seed=1364616637&r=62257269#r_62257269
就一个朋友回答的测试了速度不是很好。
大体要求如下:我想实现的功能是在一篇文章当中固定的正文字符长度之后添加广告: 例如有一篇文章内容如下: <a href="http://baidu.com">我想测试 </a>如果大海能 <strong>挽回 </strong>
我想实现在正文开始10个字符后添加广告:例如上面的这个正方用程序处理后的结果应当是:
<a href="http://baidu.com">我想测试 </a>如果大海能 <strong>挽[这里是广告代码]回 </strong>
因为文章内容不是固定不变的所以想写一算法,请大家帮忙
希望有朋友有更好的算法跟上,谢谢
就一个朋友回答的测试了速度不是很好。
大体要求如下:我想实现的功能是在一篇文章当中固定的正文字符长度之后添加广告: 例如有一篇文章内容如下: <a href="http://baidu.com">我想测试 </a>如果大海能 <strong>挽回 </strong>
我想实现在正文开始10个字符后添加广告:例如上面的这个正方用程序处理后的结果应当是:
<a href="http://baidu.com">我想测试 </a>如果大海能 <strong>挽[这里是广告代码]回 </strong>
因为文章内容不是固定不变的所以想写一算法,请大家帮忙
希望有朋友有更好的算法跟上,谢谢
<html><head>
<meta http-equiv="Content-Type" content="text/html; charset=gb2312">
<title>test</title>
<script>window.onload = function(){
var result = getAllNodes(document.body,"[这里是广告代码]",10);
if(!result){
alert("插入失败!");
}else{
alert("插入成功!");
}
}var total = 0;//当前字符位置/**
* node:节点对象
* advice:广告代码
* length:广告插入位置
* return true:插入成功;false:尚未插入
*/
function getAllNodes(node,advice,length){
var ret = false;
var nodes = node.childNodes; for(var i in nodes){
if(nodes[i].outerHTML){
ret = getAllNodes(nodes[i],advice,length);
if(ret){
break;
}
}else if(nodes[i].nodeValue){
if(nodes[i].nodeValue.length+total>=length){
nodes[i].nodeValue = nodes[i].nodeValue.substring(0,length-total)+advice+nodes[i].nodeValue.substring(length-total);
return true;
}else{
total += nodes[i].nodeValue.length;
}
}
}
return ret;
}</script>
</head><body>
<a href="http://baidu.com">我想测试</a>如<div id="div2">果<div id="div1">大</div>海</div>能<strong>挽回</strong>
</body></html>