您好,欢迎访问一九零五行业门户网

javascript getElementsByClassName 和js取地址栏参数_javascript技巧

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 var child = children[i];
var classnames = child.classname.split(' ');
for (var j = 0; 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 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');
其它类似信息

推荐信息