javascript getElementsByClassName 和js取地址栏参数
javascript getElementsByClassName 和js取地址栏参数
发布时间:2016-12-30 来源:查字典编辑
摘要:getElementsByClassName()为了从一大堆HTML代码中找出我们的树状菜单(也许有多个),我们先来实现一个通过classN...

getElementsByClassName()

为了从一大堆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教程学习
热门Javascript教程学习
编程开发子分类