JavaScript深入浅出

jk 1年前 ⋅ 3936 阅读

源于:今日头条(查看原文)

本次课为JavaScript的最后一次课。我已经教不了你们什么了,祝愿大家早日成神!!!

CSS DOM动态样式

使用JS操作CSS中的各属性。

JS只能操作或修改行内样式。如:imgObj.style.border = “1px solid red”

对于类样式,通过className来赋值。如:imgObj.className = “imgClass”

style对象

每个HTML标记,都有一个style属性。但这个style属性又是一个style对象。

那么,这个style对象的属性有哪些?style对象的属性,与CSS中的属性,一一对应。

因此,style对象用来代替CSS。

如:imgObj.style.border =1px solid red;

style对象属性与CSS属性的转换

1) 如果是一个单词,style对象属性,与CSS属性一样。

2) 如果是多个单词,第1单词全小写,后面每个单词首字母大写,并去掉中划线。

i. divObj.style.backgroundColor = “red”;

ii. divObj.style.backgroundImage = “url(images/bg.gfi)”;

iii.divObj.style.fontSize = “18px”;

JavaScript深入浅出

Event DOM:事件DOM

1、事件简介

事件主要实现“用户与网页的交互”。

当事件发生时,去执行JS功能代码。

当点击图片时(onClick),将图片放大两倍(JS代码)。

当网页加载完成时("http://p1.pstatp.com/large/b0d0006637b1173f124" alt="JavaScript深入浅出" />

JavaScript深入浅出

Event对象简介

当事件发生时,向调用函数,传递一个event参数,这个event参数是一个事件对象。

该event对象中记录了当前事件发生的环境信息。如:单击时的坐标、事件类型等。

注意:这个event对象是“短暂”存在的,新的事件发生,新的event对象产生,原来的event对象消失了。

DOM中Event对象

1、DOM中引入Event对象(DOM浏览器就是标准浏览器)

(1)通过HTML标记的事件属性来传递event对象

在DOM中,event对象是作为事件调用函数时的参数,传递给函数的。

该event参数,是系统固定写法,全小写,不能加引号,它就是event对象参数。

JavaScript深入浅出

(2)使用元素对象的事件属性来传递event对象

JavaScript深入浅出

2、DOM中Event对象属性

type:当前的事件类型

clientX和clientY:距离窗口左边和上边的距离

pageX和pageY:距离网页左边和上边的距离

screenX和screenY:距离屏幕左边和上边的距离

JavaScript深入浅出

IE中Event对象

IE中的event对象,是window对象的一个属性,可以通过window对象调用,而不需要传参数。如:window.event

JavaScript深入浅出

JavaScript深入浅出

IE中Event对象属性

type:事件的类型

clientX和clientY:距离窗口左边和上边的距离。

x和y:距离网页左边和上边的距离

screenX和screenY:距离屏幕左边和上边的距离

实例:点出满天小星星

<html onclick="init(event)">

<head>

<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />

<title>无标题文档</title>

<script type="text/javascript">

//实例:点出满天星星

/*

(1)当onclick事件发生时(点击html标记),去显示一个星星

*/

function init(e)

{

//创建图片

var imgObj = document.createElement("img");

//追加到<body>节点下

document.body.appendChild(imgObj);

//增加src属性

imgObj.src = "images/xingxing.gif";

//增加width属性

var width = getRandom(15,85);

imgObj.width = width;

//增加style属性

var x = e.clientX ? e.clientX : event.clientX;

var y = e.clientY ? e.clientY : event.clientY;

imgObj.style.position = "absolute";

imgObj.style.left = x - width/2 + "px";

imgObj.style.top = y - width/2 + "px";

}

function getRandom(min,max)

{

var random = Math.random()*(max-min)+min;

random = Math.floor(random);

return random;

}

</script>

</head>

<body bgColor="#000">

</body>

综合案例:当当推荐“显示/隐藏”

JavaScript深入浅出

1、html文件:shopping.html

JavaScript深入浅出

JavaScript深入浅出

2、JS文件代码:js/shopping.js

JavaScript深入浅出

综合案例:“选项卡”切换效果

JavaScript深入浅出

1、html文件代码:index.html

JavaScript深入浅出

JavaScript深入浅出

2、JS文件代码:index.js

JavaScript深入浅出

JavaScript深入浅出

综合案例:购物车

JavaScript深入浅出

1、鼠标放到行上改变背景色,鼠标移出后恢复背景色

<script language="javascript" src="js/shopping.js"></script>

<tr onMouseOver="productOver(this)" onMouseOut="productOut(this)">

JavaScript深入浅出

2、删除产品(删除表格行)

<tr id="shoppingProduct_01" onMouseOver="productOver(this)" onMouseOut="productOut(this)">

<td><a href="#">私募(首部披秘密的金融...</a></td>

<td>189</td>

<td>¥32.00</td>

<td>¥18.90 (59折)</td>

<td><input onBlur="productCount()" type="text" value="1"></td>

<td><a href="deleteProduct('shoppingProduct_01')">删除</a></td>

</tr>

JavaScript深入浅出

3、购物车计算

JavaScript深入浅出

<li id="total">¥626.90</li>

<li>商品金额总计:</li>

<li class="shopping_list_end_4">您共节省:<label id="jiesheng">¥233.70</label><br/>

可获商品积分:<label id="jifen">1740</label></li>

商品统计何时进行?

网页加载完成,进行商品统计。

商品删除时,进行商品统计。

当修改数量时,进行商品统计。

JavaScript深入浅出

JavaScript深入浅出

JavaScript深入浅出

表格对象的属性

一个<table>标记,对应一个table对象。

rows:获取一个表格所有的行构成的数组。

cells:获取一个行中所有单元格构成的数组。

form对象

一个<form>标记,就是一个<form>对象。

1、form对象的属性

name:表单的名称,主要用来让JS来控制表单。

action:表单的数据处理程序(PHP文件)。

method:表单的提交方式,取值:GET、POST

enctype:表单数据的编码方式。

2、form对象的方法

submit():提交表单,与<input type = “submit” />功能一样。

reset():重置表单,与重置按钮功能一样。

3、form对象的事件

onsubmit:当单击提交按钮时发生,并数据发往服务器之前发生。主要用来“在表单提交之前进行表单验证”。

onreset:当单击重置按钮时发生(了解)。

JavaScript深入浅出

获取表单元素的

通过网页元素的id来获取对象。document.getElementById(id)

通过HTML标签名来获取对象。parentNode.getElementsByTagName(tagName)

通过name属性来获取表单元素对象。表单中所有元素的起点都必须是document对象。

语法:document.formObj.elementObj

访问方式是三层结构。其中,formObj代表表单对象,elementObj代表表单元素对象。

举例:document.form1.username.value.length

事件返回值

事件的返回值,会影响对象的默认动作。如:<a>标记的默认动作是打开一个网址。

如果事件返回false,则阻止默认动作的执行;如果事件返回true或空,则默认动作继续执行。

JavaScript深入浅出

受返回值影响的事件有两个:onclick、onsubmit。

提交和验证方法总结

1、使用submit按钮,结合onsubmit事件来实现(最常用)

JavaScript深入浅出

2、submit按钮,结合onclick事件,实现表单的验证和提交

JavaScript深入浅出

3、button按钮(普通按钮),结合submit()方法,实现表单验证提交

<script type="text/javascript">

function checkForm()

{

if(document.form1.username.value.length == 0)

{

//如果用户名为空

window.alert("用户名不能为空!");

}else if(document.form1.username.value.length<5 || document.form1.username.value.length>20)

{

//如果用户名长度小于5或大于20

window.alert("用户名只能介于5-20个字符!");

}else if(checkOtherChar(document.form1.username.value))

{

//如果用户名含有特殊符号

window.alert("用户名中含有特殊符号!");

}else

{

//如果验证通过,提交表单

window.alert("验证通过!");

//表单提交方法

document.form1.submit();

}

}

function checkOtherChar(str)

{

//定义一个特殊符号的数组

var arr = ["*","&","<",">","$","\","/"];

//循环比较:数组中的每一个字符,与用户名每一个字符进行比对

for(var i=0;i<arr.length;i++)

{

for(var j=0;j<str.length;j++)

{

if(arr[i]==str.charAt(j))

{

return true;

}

}

}

//如果没找到

return false;

}

</script>

</head>

<body>

<form name="form1" method="post" action="login.php">

用户名:<input type="text" name="username" />

密码:<input type="password" name="userpwd" />

<input type="button" value="提交按钮" onclick="checkForm()" />

</form>

input对象

一个<input>标记,就是一个input对象。

1、input对象的属性(以type=text为例)

name:表单元素的名称。

value:表单元素的值,用户输入的内容,可以通过该属性来获取。

size:表单的长度。

maxlength:表单元素的最大长度(最多可输的字符数)。

disabled:禁用属性。

readonly:只读属性。

2、input对象的方法

focus():获得焦点的方法(定位光标)。

blur():失去焦点的方法(移走光标)。

select():选中文本的方法。

3、input对象的事件

onfocus:当获得焦点时

onblur:当失去焦点时

JavaScript深入浅出

综合实例:表单验证

select对象

一个<select>标记,对应一个select对象。

select对象属性

options[]:设置或返回下拉列表中<option>标记构成的数组。

selectedIndex:设置或选中指定<option>的索引号。

length:指定下拉列表中<option>标记的个数。

name:元素名称。

option对象

一个<option>标记,对应一个option对象。

option对象属性

text:指<option>和</option>之间的文本。

value:是指<option>标记的属性。

JavaScript深入浅出

综合实例:二级联动菜单

(1)二级菜单初始化

当网页加载完成,将arr_province中的数据写入到name=province下拉列表中。

name=city下拉列表数据,要根据name=province列表的默认选择(selectedIndex)而改变。

(2)根据name=province的选择,来改变name=city中的内容

当改变时,获取选择中的省份的索引值。

城市列表,会根据传递过来的索引值,请取对应的二维数组中的数据,并写入city列表中。

代码如下:

<script type="text/javascript">

var arr_province = ["请选择省/城市","北京市","上海市","天津市","重庆市","深圳市","广东省"];

var arr_city = [

["请选择城市/地区"],

["东城区","西城区","朝阳区","宣武区","昌平区","大兴区","丰台区","海淀区"],

['宝山区','长宁区','丰贤区', '虹口区','黄浦区','青浦区','南汇区','徐汇区','卢湾区'],

['和平区', '河西区', '南开区', '河北区', '河东区', '红桥区', '塘古区', '开发区'],

['俞中区', '南岸区', '江北区', '沙坪坝区', '九龙坡区', '渝北区', '大渡口区', '北碚区'],

['福田区', '罗湖区', '盐田区', '宝安区', '龙岗区', '南山区', '深圳周边'],

['广州市','惠州市','汕头市','珠海市','佛山市','中山市','东莞市']

];

//网页加载完成,初始化二级菜单

window. init; //传地址,不带括号

function init()

{

//获取name=province和name=city的对象

var province = document.form1.province;

var city = document.form1.city;

//指定省份下拉中<option>标记的个数

province.length = arr_province.length;

//循环将arr_province中的数据写入到<option>标记中

for(var i=0;i<arr_province.length;i++)

{

province.options[i].text = arr_province[i];

province.options[i].value = arr_province[i];

}

//修改省份列表中默认选择项

var index = 0;

province.selectedIndex = index;

//指定城市下拉中<option>标记的个数

city.length = arr_city[index].length;

//循环将arr_city中对应的数据写入到<option>标记中

for(var j=0;j<arr_city[index].length;j++)

{

city.options[j].text = arr_city[index][j];

city.options[j].value = arr_city[index][j];

}

}

function changeSelect(index)

{

//获取name=city的对象

var city = document.form1.city;

//指定城市下拉中<option>标记的个数

city.length = arr_city[index].length;

//循环将arr_city中对应的数据写入到<option>标记中

for(var j=0;j<arr_city[index].length;j++)

{

city.options[j].text = arr_city[index][j];

city.options[j].value = arr_city[index][j];

}

}

</script>

</head>

<body>

<form name="form1" method="post" action="login.php">

省份:<select name="province" onchange="changeSelect(this.selectedIndex)"></select>

城市:<select name="city"></select>

</form>

相关源代码:http://pan.baidu.com/s/1o8nfWqY 密码:c8a0


全部评论: 0

    我有话说: