求解!如何在一段HTML代码中定位一个标签?
一段HTML代码:
var str = "aaaa<span>bbbb</span>00000<span>111<span>222<span class="6">333<span>444</span>333<span>ccccc</span>333</span>222</span>111</span>00000";
里面包含不确定数量的<span> </span> 标签(而且有的互相嵌套);
请问如何找到与 <span class="xxx"> 闭合的那个 </span>
这个我记得以前有过解决方法,大体是用 indexOf 循环查找,不过效率不高。
有没有更高效的办法呢?
------解决方案--------------------步骤
1.引用getElementsByClass的函数
if(!getElementsByClass){var getElementsByClass=function(searchClass,node,tag){
var classElements=new Array();
if (!node){node=document;}
if (!tag){tag='*';}
var els = node.getElementsByTagName(tag);
var elsLen = els.length;
var pattern = new RegExp("(^|\s)"+searchClass+"(\s|$)");
for(var i = 0,j = 0; i < elsLen; i++) {
if( pattern.test(els[i].className)){classElements[j] = els[i];j++;}
}
return classElements;
};}
2.创建一个DIV,并插入值
var d=document.createElement("div");
d.innerHTML=str;
3.取到class="xxx"的ELEMENT
var spans=getElementsByClass("xxx",d,"span")
alert(spans.innerHTML)
4.销毁d
d=null;
------解决方案--------------------利用DOM去找
HTML code
<script language="javascript" >
var str = "aaa <span >bbbb </span >00000 <span >111 <span >222 <span class='6' >333 <span >444<span>34343</span> </span >333 <span >ccccc </span >333 </span >222 </span >111 </span >00000";
var div = document.createElement("div");
div.innerHTML = str;
findSpanTag(div);
alert(resultStr);
var resultStr = "";
function findSpanTag(obj)
{
for(var i=0;i<obj.childNodes.length;i++)
{
var element = obj.childNodes[i];
if(element.nodeType==1)
{
if(element.tagName=="SPAN")
{
if(element.className=="6") //找到则返回
{
resultStr=element.outerHTML;
return true;
}
if(element.childNodes.length!=0)
{
findSpanTag(element); //递规调用
}
}
}
}
return false;
}
</script>
------解决方案--------------------
现在才看懂楼主的意思,原来楼主是想把某个变量里的值进行replace,我正则不行,帮你顶一下。