JS获取对象代码总结
作者:sunxiaobo2008 来源:经典论坛 发布时间:2011-03-07 16:14:00
如果不用类库(如jquery)来写,往往很多时候,都需要通过id或tag来获取html里的某一对象,然后对其进行操作。
为了节省代码,把常用的获取对象的方法集成到函数里,每次直接通过传递参数来调用,可以是代码更简洁。下面总结了一下常用的获取对象的方法,供参考。
function GetId(id){return document.getElementById(id)} //通过ID获取对象
function GetTag(tag){return document.getElementsByTagName(tag)} //通过Tag获取对象(html标签名称)
function GetChildTag(id,tag){return id.getElementsByTagName(tag)} //通过Tag获取某ID对象的子对象
function GetClass(className){return getElementsByClassName(className)} //通过className获取对象
var $c=function(array){var nArray = [];for (var i=0;i<array.length;i++) nArray.push(array[i]);return nArray;};
Array.prototype.each=function(func){for(var i=0,l=this.length;i<l;i++) {func(this[i],i);};};
var getElementsByClassName=function(cn){
var hasClass=function(w,Name){
var hasClass = false;
w.className.split(' ').each(function(s){
if (s == Name) hasClass = true;
});
return hasClass;
};
var elems =document.getElementsByTagName("*")||document.all;
var elemList = [];
$c(elems).each(function(e){
if(hasClass(e,cn)){elemList.push(e);}
})
return $c(elemList);
};
上面代码里通过className获取对象的代码参考了论坛的一篇帖子,在此表示感谢。
使用方法示例:
[提示:你可先修改部分代码,再按运行]
部分HTML代码:
<div id="test" title="这是id=test的div">
<ul title="div内第一个ul">
<li>ccontent1</li>
<li>ccontent2</li>
<li>ccontent3</li>
<li>ccontent4</li>
</ul>
<ul class="test2" title="div内第二个ul,class=test2">
<li>bcontent1</li>
<li>bcontent2</li>
<li>bcontent3</li>
</ul>
</div>
<ul class="test2" title="div外的ul,class=test2">
<li>content1</li>
<li>content2</li>
</ul>
<input type="button" value="通过id获取" />
<input type="button" value="通过tag获取" />
<input type="button" value="通过id内tag获取" />
<input type="button" value="通过className获取" />
JS绑定事件:
window.onload=function(){
GetTag("input")[0].onclick=function(){alert("id为test的div内容是:"+GetId("test").innerHTML)}
GetTag("input")[1].onclick=function(){alert("body里共有"+GetTag("li").length+"个li")}
GetTag("input")[2].onclick=function(){alert("DIV里共有"+GetChildTag(GetId("test"),"li").length+"个li")}
GetTag("input")[3].onclick=function(){alert("className为test2的内容是:"+GetClass("test2")[0].innerHTML+GetClass("test2")[1].innerHTML)}
}
当然上面的函数名你还可以再简写,比如百度里获取id对象的函数就是这样的:
function G(id){return document.getElementById(id)} //调用方式:G("test")
或者这样:function $(id){return document.getElementById(id)} //$("test")
猜你喜欢
- 从Access数据库中选取记录有件最令人丧气的事情,它们是以怎样的顺序输入到数据库内就按照怎样的顺序出来。就算你在Access环境内采用So
- 这问题在网络相信已经有不少人问到,最近再次被牵起讨论,籍此记录一下个人的理解,border:none;与border:0;的区别体现有两点:
- 你喜欢在博客文章中使用图片吗?是的,如果不是很麻烦的话,相信大家都不会介意放上几张漂亮的图片来点缀一下内容的,不过你的图片可能会导致下面的两
- 1.说明:复制表(只复制结构,源表名:a 新表名:b)SQL: select * into b&nb
- 好了,下面我们看看如何在服务器上生成.m3u文件并下传到客户端的:<%dim choose,path,mydb,myset,
- 两组字符串数据,需要比较其中相同的数据,并将其值相加并组成一个新的字符串数据a1="sp2=20;sp1=34;"a2=
- 原本运行正常的ASP页面,今天突然提示: 代码如下: Microsoft VBScript 运行时错误 错误 '800a01a8&
- 一旦你已经为MySQL实例管理器设置了一个密码文件并且IM正在运行,你可以连接它。你可以使用mysql客户端工具通过标准MySQL API来
- jQuery 真是一个非常伟大的 javascript library,至少在我不会写 JS 的时候第一时间接触了它,虽然还有其他很多优秀的
- 在近日的写Web程序时用到了Access的模糊查询,在Acces里写代码怎么也找不到记录后来才起来原来Acess和SqlServer的模糊查
- 做WEB前台开发也有两年多,在开发中经常要涉及到DOM编程,我想大家也跟我一样,经常要处理各种DOM编程的操作,今天我就拿一个lightbo
- 划动门菜单技术:运行代码框<style>body {font-size:12px;font-family:宋体}ul.TabBa
- 在VS2005装完后,会自带SQL Server2005 express版,为了便于管理,还需要安装一个企业管理器,需要下载 Microso
- 具体代码如下:Function ASTCreateFtpSite(IPAddress, RootDirectory,&n
- 当然首先得去下载ASPupload 程序,安装后使用!官方网站下载:http://www.aspupload.com/使用ASP实现文件上载
- 具体代码见下。在此程序中,由于使用了变量,我们需将全部聊友的昵称用“,”(逗号)来隔开,储存到application("visit
- 从人类认知的角度的看,人类擅长识别并不擅长于记忆,当一个用户面对浩瀚的信息海洋,通常会产生畏惧感,会本能的对这些信息片段进行加工找出其内在的
- iframe的防插与强插(一)中介绍了“市面上”能见到的两种防御被第三方网站iframe的方法,以及相应的变态突破方法。貌似把“受害人”逼上
- 内容摘要:图片随机显示是一个应用非常广泛的技巧。比如随机banner的显示,当你进入一个网站时它的banner总是不同的,或者总有内容不同的
- 今天好不容易闲下来半天,所以和大家分享一下我之前总结的一套Web UI 设计命名规范,也就是网站用户界面设计(俗称网页设计)命名规范。这套规