function FindProperty() {
var _property;
var EleList = new Array();
var j = 0;
var tags = "t", names = "";
this.Find = function (property) {
_property = property;
Analysis(document.body.innerHTML, property);
return EleList;
}
AddById = function (id) {
var node = document.getElementById(id);
AddElement(node);
}
AddByName = function (name) {
if (names.indexOf("," + name + ",") > 0) return;
names += "," + name + ",";
var nodes = document.getElementsByName(name);
if (!nodes) return;
for (var i = 0; i < nodes.length; i++) {
if (nodes[i].getAttribute(_property) != null) {
AddElement(nodes[i]);
}
}
}
AddByTag = function (tag) {
if (tags.indexOf("," + tag + ",") > 0) return;
tags += "," + tag + ",";
var nodes = document.getElementsByTagName(tag);
if (!nodes) return;
for (var i = 0; i < nodes.length; i++) {
if (nodes[i].getAttribute(_property) != null) {
AddElement(nodes[i]);
}
}
}
AddElement = function (element) {
if (!element) return;
for (var i = 0; i < EleList.length; i++) {
if (element == EleList[i]) return;
}
EleList[j] = element;
j++;
}
Analysis = function (rtext, property) {
var reg = new RegExp("<[^<>]+?\\b" + property + "\\s{0,}=[^<>]+?>", "g");
var nameReg = new RegExp("<[^<>]*?\\bname\\s{0,}=\\s{0,}[\"'](.*?)[\"'][^<>]*?>", "i");
var idReg = new RegExp("<[^<>]*?\\bid\\s{0,}=\\s{0,}[\"'](.*?)[\"'][^<>]*?>", "i");
var tagReg = new RegExp("<(.*?)\\s[^<>]*?>", "i");
var result = rtext.match(reg);
if (!result) return null;
var list = new Array();
for (var i = 0; i < result.length; i++) {
rtext = result[i];
if (idReg.test(rtext)) {
rtext = rtext.match(idReg)[1];
AddById(rtext);
} else if (nameReg.test(rtext)) {
rtext = rtext.match(nameReg)[1];
AddByName(rtext);
} else {
rtext = rtext.match(tagReg)[1];
AddByTag(rtext);
}
}
}
}
这个我自己写的,还有很多地方需要改进,搜索效率也有待提升,希望多给点建议和意见:
引用上面的js 后执行下面的代码就能找到包含指定属性的所以标签:
<body>
<script language="javascript" type="text/javascript">
function Go(){
var obj=new FindProperty();
var list=obj.find("mytag");
if(!list)return;
alert("共找到"+list.length+"个");
for(var i=0;i<list.length;i++){
alert(list[i].innerHTML);
}
}
</script>
<div >你找不到我</div>
<div id="test" mytag="div">我是你想找的</div>
<div >你找不到我</div>
<div name="test" myTag="div">我是你想找的,可我又不喜欢你</div>
<div >你找不到我</div>
<div >我不是你想找的</div>
<div myTag="div">怎么被你找到的?</div>
<div >你找不到我</div>
<input type="button" value="查找div中含有'myTag'属性的标签" οnclick="Go()" />
</body>
原创 [转载请注明出处]