类似JQuery对元素节点获取的一些封装

(function(window) {
	window._ = {
	
	/********************获取节点***********************/	

	,	e : function(exp) {
			//去字符串前后空格
			var reg = /^\s*|\s*$/g;
			exp = exp.replace(reg , "");
			//多个空格替换成一个空格
			reg = /\s+/g;
			exp = exp.replace(reg , " ");
			//分割
			var tabs = exp.split(" ");
			//正整数
			reg = /^[1-9]\d*$/;
			//开始
			var index = 1;
			var result = this.re({tab : tabs[0]});
			//遍历
			for(;index < tabs.length ; index++) {
				if(tabs[index] == "child") {
					//所有子节点
					result = result.children;
				} else if(tabs[index] == "first") {
					//第一个节点
					result = result[0];
				} else if(tabs[index] == "last") {
					//最后一个节点
					result = result[result.length - 1];
				} else if(reg.test(tabs[index])) {
					//第N个节点
					result = result[parseInt(tabs[index]) - 1];
				} else {
					//获取新节点
					result = this.re({tab : tabs[index] , ele : result});
				}
			}
			//返回结果
			return result;
		} ,
		
		re : function(config) {
			//获取字符串第一个字符
			var s = config.tab.substr(0 , 1);
			//获取name
			var name = config.tab.substr(1 , config.tab.length - 1);
			//根据id获取节点
			if(s == "#") {
				return document.getElementById(name);
			}
			//根据class获取节点
			if(s == ".") {
				if(config.ele == undefined) {
					return document.getElementsByClassName(name);
				}
				return config.ele.getElementsByClassName(name);
			}
			//根据标签名获取节点
			if(config.ele == undefined) {
				return document.getElementsByTagName(config.tab);
			}
			return config.ele.getElementsByTagName(config.tab);
		}

/********************获取节点************************/

	}
})(window);

//节点获取测试
<!DOCTYPE html>
<html>
	<head>	
	</head>
	<body>
		<!--登陆与注册-->
		<section class="lr">
			<!--头部-->
			<div class="lr-header">
				<i class="current">登陆</i>
				<i>注册</i>
			</div>
			<!--内容-->
			<div class="lr-content">
				<!--登陆-->
				<div id="login">
					<!--取form中的值,根据元素类型取input元素-->
					<form>
						<div>
							<span>账号</span>
							<input type="text" name="username" placeholder="请输入您的登陆账号,账号为用户名、手机号或者邮箱" />
						</div>
						<div>
							<span>密码</span>
							<input type="password" name="password" placeholder="请输入您的登陆密码,密码区分大小写" />
						</div>
						<div>
							<span>验证码</span>
							<input type="text" name="verifycode" class="verifycode" placeholder="请输入验证码" />
							<img src="images/verifycode.jpeg" />
						</div>
						<div class="remember">
							<input type="checkbox" name="remember"/>
							<span>记住密码</span>
						</div>
					</form>
					<input type="button" value="登&nbsp;陆" />
					<div class="bottom">
						<a href="javascript:;">找回密码</a>
						<span>|</span>
						<span>还没有注册账号?</span>
						<a href="javascript:;" id="imm">立即注册</a>
					</div>
				</div>
				<!--注册-->
				<div id="register">
					<form>
						<div>
							<div>
								<span>账号</span>
								<span class="tips">账号已存在,或输入有错误</span>
							</div>
							<input type="text" name="username" placeholder="作为登陆账号,可以是手机号码、邮箱或者用户名" />
						</div>
						<div>
							<div>
								<span>密码</span>
								<span class="tips">密码输入有错误</span>
							</div>
							<input type="password" name="password" placeholder="字母、数字、符号均可做为密码,最短8位,最长30位,区分大小写" />
						</div>
						<div>
							<div>
								<span>再次输入密码</span>
								<span class="tips">两次密码输入不一致</span>
							</div>
							<input type="password" placeholder="请再次输入密码,以确定登陆密码的准确性" />
						</div>
						<div>
							<span>验证码</span>
							<input type="text" name="verifycode" class="verifycode" placeholder="请输入验证码" />
							<img src="images/verifycode.jpeg" />
						</div>
					</form>
					<input type="button" value="注&nbsp;册"/>
				</div>
			</div>
		</section>
		<script src="_.js"></script>
		<script>
			window.onload = function() {
				//"div 2 div first form first input last"表示获取文档中第2个div中的第一个div中的第一个form中的最后一个input节点
				//id获取同jQuery使用_.e("#id"),class获取_.e(".class"),标签获取_.e("tag"),因class与tag获取得到是节点数组,所以其后所跟随的数字表示取第几个节点,而其后跟随的不是数字与first、last那么将会得到上一个节点的后代节点,例如:_.e("form 1 input")将会得到文档中第一个form中的input节点数组,而_.e("form 1 input 2")将会得到文档中第一个form中的第二个input节点
				console.log(_.e("div 2 div first form first input last"));
			}
		</script>
	</body>
</html>
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值