javascript getElementsByClassName 和js取地址栏参数
2010-01-02 00:00
766 查看
getElementsByClassName()
为了从一大堆HTML代码中找出我们的树状菜单(也许有多个),我们先来实现一个通过className找DOM节点的方法:getElementsByClassName。这是对浏览器自有DOM方法的一个简单但实用的扩充。
此方法有两个参数:ele指出以哪个DOM节点为根节点寻找(也就是说只找ele的子节点),className指出符合条件的节点的class属性中必须包含怎样的className。它的返回值是一个数组,存放了所有符合条件的节点。
最前面的一个if-else语是为了兼容IE5(IE5不能运行
document.getElementsByTagName('*'))。需要注意的是千万不要用浏览器检测的方法来写脚本,而应该直接使用将要用到的语句来测试是否可以执行,如果返回值为null或undefined,那再换一种方法。这样的脚本可以有更好的兼容性,也更健壮。
elements[elements.length] = child;,这句同样是为了兼容IE5才没有使用数组
的push方法。如果你一定要使用push方法,那么可以在执行getElementsByClassName()
之前先重载一遍push方法。代码如下:
Array.prototype.push = function(value){
this[this.length] = value;
} 注:原本我希望getElementsByClassName也能像push方法一样写,比如
HTMLElement.prototype.getElementsByClassName = ...。不过实际操作的时候发现在
运行时HTMLElement这个对象并不是固定的,每种tag似乎都不一样,只能作罢。
取地址栏参数
为了从一大堆HTML代码中找出我们的树状菜单(也许有多个),我们先来实现一个通过className找DOM节点的方法:getElementsByClassName。这是对浏览器自有DOM方法的一个简单但实用的扩充。
此方法有两个参数:ele指出以哪个DOM节点为根节点寻找(也就是说只找ele的子节点),className指出符合条件的节点的class属性中必须包含怎样的className。它的返回值是一个数组,存放了所有符合条件的节点。
function getElementsByClassName(ele,className) { //获取所有子节点 if(document.all){ var children = ele.all; }else{ var children = ele.getElementsByTagName('*'); } //遍历子节点并检查className属性 var elements = new Array(); for (var i = 0; i < children.length; i++) { var child = children[i]; var classNames = child.className.split(' '); for (var j = 0; j < classNames.length; j++) { if (classNames[j] == className) { elements[elements.length] = child; break; } } } return elements; } var trees = getElementsByClassName(document,'TreeView');
最前面的一个if-else语是为了兼容IE5(IE5不能运行
document.getElementsByTagName('*'))。需要注意的是千万不要用浏览器检测的方法来写脚本,而应该直接使用将要用到的语句来测试是否可以执行,如果返回值为null或undefined,那再换一种方法。这样的脚本可以有更好的兼容性,也更健壮。
elements[elements.length] = child;,这句同样是为了兼容IE5才没有使用数组
的push方法。如果你一定要使用push方法,那么可以在执行getElementsByClassName()
之前先重载一遍push方法。代码如下:
Array.prototype.push = function(value){
this[this.length] = value;
} 注:原本我希望getElementsByClassName也能像push方法一样写,比如
HTMLElement.prototype.getElementsByClassName = ...。不过实际操作的时候发现在
运行时HTMLElement这个对象并不是固定的,每种tag似乎都不一样,只能作罢。
取地址栏参数
//v1: var URLParams = new Array(); var aParams = document.location.search.substr(1).split('&'); for (i=0; i < aParams.length i++){ var aParam = aParams.split('='); URLParams[aParam[0]] = aParam[1]; } //取得传过来的name参数 name=URLParams['name']; //v2: Request = { QueryString : function(item){ var svalue = location.search.match(new RegExp('[\?\&]' + item + '=([^\&]*)(\&?)','i')); return svalue ? svalue[1] : svalue; } } var key = Request.QueryString('key');
相关文章推荐
- javascript getElementsByClassName 和js取地址栏参数
- [ javascript ] getElementsByClassName与className和getAttribute!
- JS根据类名查找对象,getElementsByClassName
- 原生js document.getElementsByClassName在IE8及以下浏览器的兼容
- JS getElementsByClassName
- JS模拟出 getElementsByClassName 功能
- JS整理,getCookie, getElementsByClassName , 添加删除事件
- javascript getElementsByClassName实现代码
- js中获取类名的函数getElementsByClassName()
- 原生JavaScript解决document.getElementsByClassName兼容问题
- js getElementsByClassName
- javascript getElementsByClassName函数
- js 如何获取class的元素 以及创建方法getElementsByClassName
- getElementsByClassName.js
- 原生js方法document.getElementsByClassName在ie8及其以下的兼容性问题
- 【js:class属性】——自定义function:getElementsByClassName
- JavaScript: Get Elements by ID, Tag, Name, Class
- js获取class-----ie不支持getElementsByClassName
- javascript基础(Dom查询的其他方法:body,documentElement,all,getElementsByClassName(),querySelectorAll())(二十八)
- javascript getElementsByClassName扩展函数