var selected = document.selection.createRange(); 你这个是得选择,没有选择就值了
function a() { var ps=document.getElementsByTagName('p'); var s=''; for(var i=0;i<ps.length;i++) { if(i==(ps.length-1)) s+=ps[i].innerHTML; else s+=ps[i].innerHTML+'##'; } var arr=s.split(/##/); alert(arr); }
试试这个
你这个是得选择,没有选择就值了
{
var ps=document.getElementsByTagName('p');
var s='';
for(var i=0;i<ps.length;i++)
{
if(i==(ps.length-1))
s+=ps[i].innerHTML;
else
s+=ps[i].innerHTML+'##';
}
var arr=s.split(/##/);
alert(arr);
}
var str = '<span><p id="p1">思想总在经历和压力中成熟等等等等的风格大方过方反水电费是否是大方复复反反复等的说待遇很投入一提</p><p id="p2">但是</p><p id="p3">按时打算地方撒通过热吧</p></span>';
var reg = /<p.*?>(.+?)<\/p>/ig, arr = [], tem;
while(tem = reg.exec(str)){
if(tem[1])arr.push(tem[1]);
}
alert(arr.join('\n'));
</script>
<head>
</head>
<body>
<span onMouseUp="getData()">
<p id="p1">思想总在经历和压力中成熟等等等等的风格大方过方反水电费是否是大方复复反反复等的说待遇很投入一提</p>
<p id="p2">但是</p>
<p id="p3">按时打算地方撒通过热吧</p>
</span>
<script type="text/javascript">
var sText=document.getElementsByTagName("span")[0].innerHTML;
alert(sText);
var oReg=/<p.*?>[\S\s]+?<\/p>/mgi;
alert(sText.match(oReg)
.join("|")
.replace(/<.*?>/gi,"")
.split("|"));
</script>
</body>
</html>
<p id="p2">总在经历和<b>压力</b>中成熟!~</p>
需要把<b></b>也过滤掉!~
var str = '<span><p id="p1">思想总</p><p>在经<b>历和</b>压力中成熟等等等等的风格大方过方<b>反水</b>电费是否是大方复复反反复等的说待遇很投入一提</p><p id="p2">但是</p><p id="p3">按时打算地方撒通过热吧</p></span>';
var reg = /<p.*?>(.+?)<\/p>/ig, arr = [], tem;
while(tem = reg.exec(str)){
if(tem[1])arr.push(tem[1].replace(/<.*?>/g,'')); // 得到引用同时替换p内标签
}
alert(arr.join('\n'));
</script>
我刚想用循环,每循环一次,遍历页面中的文本,一旦找到与本次循环中的数组元素值的话,选中页面中的文本。但是循环不行!等待新的思路。
function findString()
{
var TRange=null;
var str = '<span><p id="p1">思想总</p><p>在经<b>历和</b>压力中成熟等等等等的风格大方过方<b>反水</b>电费是 否是大方复复反反复等的说待遇很投入一提</p><p id="p2">但是</p><p id="p3">按时打算地方撒通过热吧</p></span>';
while(tem = reg.exec(str))
{
if(tem[1])arr.push(tem[1].replace(/<.*?>/g,'')); }
if(TRange != null)
{
TRange.collapse(false);
for(var i=0;i<arr.length;i++)
{
//alert(arr[i]);
strFound = TRange.findText(arr[i]);
if(strFound)
TRange.select(); //选中页面中指定的文本。
} }
else if(TRange == null||strFound == 0)
{
TRange = self.document.body.createTextRange();
for(var i=0;i<arr.length;i++)
{
//alert(arr[i]);
strFound = TRange.findText(arr[i]);
if(strFound)
TRange.select(); //选中页面中指定的文本。
}
}
}
这样出来的效果不对,选中3个<p></p>中的内容后,for循环3次,alert弹出3次,确定第一次选中的内容后,弹出的数组中的内容在页面中被选中,然后又弹出一次数组中的第二个元素,确定后弹出的窗口后,页面中和第二次弹出的内容一样的文本被选中,同时第一次被选中的文本消失....这个问题该怎样避免?或者有什么新的思路?首次载入页面:确定第一个弹出窗口后:确定第二个弹出窗口后:确定第三个弹出窗口后:http://j.thec.cn/tdy218/img/last.jpg
要是能用:TRange.select();最好了!~