利用jQuery中hover()和cookie机制编写的小程序

本文中,主要练习的是hover(inFunction(),outFunction())函数的使用和cookie机制的应用。此程序没用实用意义,纯属练手。代码大概思路是:左侧是一张图片区域和按钮,当鼠标移到按钮上边时,显示美女图片;当鼠标移出按钮时,显示纯灰色图片。而右侧是cookie机制的使用。当用户写入姓名和密码并点击按钮保存时,刷新或者关闭页面重新打开页面后,姓名和密码会自动显示之前输入的。改写cookieHandle代码中的cookie有效期可以控制cookie的保存时间。

注意点:①  chrome和firefox屏蔽了本地的cookie写入,所以,运行结果会有错误。但可以在IE下正确运行。

               ②  代码中充分体现了JS语言基于对象的特性,将各种变量和操作都封装在table变量内,实现需求的功能

       ③  基础知识点:JS变量命名的简便格式(变量名:值),jQuery选择器的正确使用

$("div.name")     :表示所选择对象是class名为name的<div>标签。

$("div .name ")   :表示所选择对象是<div>标签中class名为name的对象。

$("div , .name")  :表示所选择对象是class名为name的对象和<div>标签内的对象。

运行结果如下图所示:


demo.html代码如下:

<!DOCTYPE html> 
<head> 
<meta http-equiv="Content-Type" content="text/html;"> 
<title>小demo</title> 
<script src="CookieHandle.js"></script> 
<script src="jquery-1.8.0.min.js"></script>

<script>

	$(document).ready(function() { 
		table.init(); 
	});

	var table={
		name : cookieHandle.getCookie("姓名") || '' ,   //获取cookie中保存的姓名
		password : cookieHandle.getCookie("密码") || '',   //获取cookie中保存的密码

		//封装了加载页面时需要显示的内容
		init:function(){
			$("#name").val(this.name);				//将读取到的cookie值显示
			$("#password").val(this.password);

			//按钮的hover()事件
			$("#but").hover( 
				function () {
					$("#but").text("移出鼠标到按钮隐藏图片");
						document.getElementsByTagName('img')[0].setAttribute('src','photo.jpg');
				},
				function(){
					$("#but").text("移动鼠标到按钮显示图片");
						document.getElementsByTagName('img')[0].setAttribute('src','gray.jpg');
				}
			);			
		}
		
	};

	//点击按钮保存cookie
	function save(){
			cookieHandle.setCookie({
				name: "姓名", 
				value: $("#name").val(), 
				expiresHours: 365 * 24 
			});
			cookieHandle.setCookie({
				name: "密码", 
				value: $("#password").val(), 
				expiresHours: 365 * 24 
			});
			
	}

</script>
<style>
	#table{
		margin-left: 10px;
		width:60%;
		height:500px;
		border:5px solid green;
		
		background-color: lightgreen;
	}
	#left{
		float:left;
	}
	img{
		margin: 10px;
		width:300px;
		height:400px;
	}
	button{
		margin: 10px auto auto 160px;
		font-size:20px; 
		color:darkorange;
		
	}
	fieldset{
		border-width:2px;
		border-color: lightblack;
		float:right;
		margin:200px 100px auto auto;
	}
	legend{
		background-color: gray;
		color:white;
		font-size:20px;
	}
	input{
		height:20px;
	}
	#butt{
		margin-top:40px;

	}
</style>
</head>
<body>
<div id="table">

	<frameset>
		<div id=left>
			<img src="gray.jpg" />
			</br>
			<button id='but'>移出鼠标到按钮隐藏图片</button>
		</div>

		<fieldset id='right'>
		<legend>用户信息</legend>
			<p>姓名</p>
			<input id='name' />
			<br/>
			<p>密码</p>
			<input id='password' />
		</fieldset>
		<button id='butt' οnclick="save()">记住我的信息 </button>
	<frameset>

</div>
</body>
</html>


CookieHandle.js代码如下(引用了网上某篇五子棋程序的代码):

/**
 * cookieHandle: 常用cookie操作方法的封装
 * date: 2013.1.10
 * author: Seven
**/
var cookieHandle = {
    //获取cookie中name对应的值
    getCookie: function (name) {
        var cookies = document.cookie.split("; "),
            arr;
        for (var i = 0, len = cookies.length; i < len;i++) {
            arr = cookies[i].split("=");
            if(arr[0] == encodeURIComponent(name)) {
                return decodeURIComponent(arr[1]);
            }
        }
        return "";
    },
    // 设置cookie
    // option.name: cookie名,必选
    // option.value: cookie值,必选
    // option.expiresHours: 过期时间,可选,默认为浏览器关闭即消失
    // option.path: cookie存放路径,可选。例如"/"、"/shop"。
    // 默认情况下,如果在某个页面创建了一个cookie,那么该页面所在目录中的其他页面也可以访问该cookie。
    // 如果这个目录下还有子目录,则在子目录中也可以访问。
    // 例如在www.xxxx.com/html/a.html中所创建的cookie,
    // 可以被www.xxxx.com/html/b.html或www.xxx.com/html/some/c.html所访问,但不能被www.xxxx.com/d.html访问。
    // option.domain: 可访问该cookie的域名,可选。
    setCookie: function (option) {
        var cookieStr = encodeURIComponent(option.name) + "=" + encodeURIComponent(option.value);
        if (option.expiresHours) {
            var date = new Date();
            date.setTime(date.getTime() + option.expiresHours * 3600 * 1000);
            cookieStr = cookieStr + "; expires=" + date.toUTCString();
        }
        if (option.path) {
            cookieStr = cookieStr + "; path=" + option.path;
        }
        if (option.domain) {
            cookieStr = cookieStr + "; domain=" + option.domain;
        }
        document.cookie = cookieStr;
    },
    // 删除cookie
    // name: cookie名,必选
    // option.path: cookie存放路径,可选
    // option.domain: 可访问该cookie的域名,可选
    // 需要注意的是,设置cookie时,如果setCookie传了path、domain,删除时也必选传入这两个参数,否则无法删除cookie
    // 另外,经测试,如设置了path、domain,删除时需在设置cookie的同一域下删除
    deleteCookie: function (name, option) {
        var date = new Date(0);
        document.cookie = name + "=88; expires=" + date.toUTCString() +
                            (option.path ? ("; path=" + option.path) : "") +
                            (option.domain ? ("; domain=" + option.domain) : "");
    }
};



评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值