加入收藏 | 设为首页 | 会员中心 | 我要投稿 河北网 (https://www.hebeiwang.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 运营 > 正文

getElementsByAttribute

发布时间:2018-09-03 20:51:03 所属栏目:运营 来源:站长网
导读:这个可以说属性选择符的JS版,用来遴选元素是得当不外。在开始之前,我们温习一下CSS2的属性选择符,JQuery好手可以跳过。 属性选择符: 虽然属性值不定要用双引号,也可以用单引号,或爽性不写。属性值可所以字母,数字,可能gb2312等编码的笔墨,总之,

  这个可以说属性选择符的JS版,用来遴选元素是得当不外。在开始之前,我们温习一下CSS2的属性选择符,JQuery好手可以跳过。

  属性选择符:

  虽然属性值不定要用双引号,也可以用单引号,或爽性不写。属性值可所以字母,数字,可能gb2312等编码的笔墨,总之,平常奈何定名变量,也应该奈何定名此属性值。如,我们可以用中文来定名变量,因此同样的事出在属性值上也没有题目。假如属性值是"#"就必定所错,由于变量名也不能这样用。不外提议只管用英文单词。

  好了,是getElementsByAttribute的演出时刻了,比网上的同名函数强盛得多了。传入两个参数,第一个是字符串,必选,就是CSS2的属性性选择符,因为是字符串,内里就不要加双引号与单引号了,我也懒得匹配它。第二个是元素节点,可选,用来加速查找速率,默认是document。不外自从IE8等支持querySelector与querySelectorAll后,jQuery的选择器根基只剩下半条命,也只能在IE6,IE7这些要啥没啥的非尺度赏识器作威作福而已。因此,假如检测到赏识器支持querySelectorAll,就挪用该原生要领,不然就全文档遍历匹配。

Copy to ClipboardLiehuo.Net Codes引用的内容:[www.veryhuo.com] //***********@author:司徒正美(nasami)*************
//http://www.cnblogs.com/rubylouvre/archive/2009/10/26/1590102.html
var getElementsByAttribute = function(search){
var tag = /([*a-zA-Z1-6]*)?([(w+)s*(^|$|*|||~|!)?=?s*([wu00C0-uFFFFs-_.]+)?])?/,
node = arguments[1] || document,
agent = search.match(tag),
tag = agent[1] || "*",
attribute = agent[3],
type = agent[4]+"=",
value = agent[5],
ieAttrFix = {"class": "className","for": "htmlFor"},
returnElements = [],
//IE5.5不支持“*”
elements = (tag === "*" && node.all)? node.all : node.getElementsByTagName(tag),
length = elements.length;
if((!!document.querySelectorAll) && type != "!="){
elements = document.querySelectorAll(search);
for(var i=0,length = elements.length;i < length;i++){
returnElements.push(elements[i]);
}
return returnElements
}
if(!+"v1")
attribute = ieAttrFix[attribute] ? ieAttrFix[attribute] : attribute;
while(--length >= 0){
var current = elements[length],
_value = !+"v1" ? current[attribute] : current.getAttribute(attribute);
if(typeof _value === "string" && _value.length > 0){
if(!!value){
var condition =
type === "=" ?//完全便是
_value === value :
type === "!=" ?//不便是
_value != value :
type === "*=" ?//包括
_value.indexOf(value) >= 0 :
type === "~=" ?//匹配傍边的某个单词,如<span class="red bold">告诫</span>
(" " + _value + " ").indexOf(value) >= 0:
type === "^=" ?//以XX开头
_value.indexOf(value) === 0 :
type === "$=" ?//以XX末了
_value.slice(-_value.length) === value:
type === "|=" ?//匹配属性值为XX或以XX-打头的元素
_value === value || _value.substring(0,value.length+1) === value+"-" :
false;
condition && returnElements.push(current);
}else{
returnElements.push(current)
}
}
}
return returnElements;
}

  最后牢记,假如要行使到属性值,不要把属性值用引号引起来,直接放到便是号后头即可。放一些测试页面,让各人看看怎样行使此函数。


提醒:可修改儿女码再运行!


提醒:可修改儿女码再运行!


提醒:可修改儿女码再运行!


提醒:可修改儿女码再运行!


提醒:可修改儿女码再运行!


提醒:可修改儿女码再运行!


提醒:可修改儿女码再运行!

  作者博客:http://www.cnblogs.com/rubylouvre/

(编辑:河北网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    热点阅读