js案例

JS

今日任务

  • 使用JS完成页面定时弹出广告
  • 使用JS完成表单的校验
  • 使用JS完成表格的隔行换色
  • 使用JS完成复选框的全选效果
  • 使用JS完成省市联动效果

教学导航

教学目标

掌握JS中的BOM对象

掌握JS中的常用的事件

掌握JS中的常用DOM操作

了解JS中的内置对象

教学方法

案例驱动法

 

1.1 使用JS定时弹出广告

1.1.1 需求分析

在浏览网站的时候,通常会5秒左右在顶部显示一个广告。过了5秒钟将这个广告隐藏。在网站的首页上显示这个广告。

1.1.2 分析:

1.1.2.1 技术分析:

JS的定时操作】

setInterval();

setTimeout();

 

clearInterval();

clearTimeout();

CSS控制显示和隐藏的属性】

display:

l block :显示的

l none :隐藏的

1.1.2.2 步骤分析:

  • 步骤一:确定事件:onload.
  • 步骤二:在函数中设置定时的操作.5秒显示这个div.
  • 步骤三:清除原来的定时,重新设置一个定时操作.5秒以后隐藏掉.
  • 步骤四:设置5秒后隐藏的定时,可以清除.

1.1.3 代码实现

<script>

var time;

function init(){

// 设置定时操作:

time = setInterval("showAd()",5000);

}

 

function showAd(){

// 获得div元素

var divAd = document.getElementById("divAd");

divAd.style.display = "block";

// 清除之前的定时操作:

clearInterval(time);

// 重新设置一个定时:5秒钟隐藏:

time = setInterval("hideAd()",5000);

}

 

function hideAd(){

// 获得div元素

var divAd = document.getElementById("divAd");

divAd.style.display="none";

clearInterval(time);

}

</script>

1.1.4 总结

1.1.4.1 扩展内容

JS的引入的方式】

  • 内部的JS

使用<script>标签

  • 外部的JS

创建一个.js的文件

使用<script src="ad.js"></script>

BOM中的对象】

 

l Window对象:浏览器最顶层的对象.

 

l Navigator

 

l Screen

 

l History

 

l Location

 

1.2 使用JS完成表单的校验

1.2.1 需求分析

之前已经完成了一个表单校验,弹出提示框的形式。用户的体验不是特别的好。现在当鼠标点到文本框的时候,在文本框的后面给我们一段提示.当光标离开的时候完成校验.将信息写到文本框的后面的位置而不是提示框的形式。

1.2.2 分析

1.2.2.1 技术分析

JS中的事件】

之前使用的事件:

onclick

onsubmit

onload

 

使用:

onfocus :获得焦点

onblur :失去焦点

JS控制向HTML的某个元素中写入内容】

document.getElementById(“”).innerHTML = “”;

1.2.2.2 步骤分析

  • 确定事件获得焦点和失去焦点
  • 定义函数,在函数中进行校验
  • 将校验的内容写入到文本框后面的<span>元素

1.2.3 代码实现:

<script>

function showTips(uid,info){

// 控制后面的span元素:

document.getElementById(uid+"span").innerHTML = "<font color='gray'>"+info+"</font>";

}

 

function checkUsername(uid,info){

// 判断用户名是否为""

var uValue = document.getElementById(uid).value;

if(uValue == ""){

document.getElementById(uid+"span").innerHTML = "<font color='red'>"+info+"</font>";

}else{

document.getElementById(uid+"span").innerHTML = "";

}

}

</script>

1.2.4 总结

1.2.4.1 JS的事件的总结

onchange :下拉列表上

ondblclick :双击

onkeydown :键盘按下

onkeyup :键盘抬起

onmouseover :鼠标在上面

onmouseout :鼠标离开

onmousemove :鼠标移动

 

需求:表格鼠标放上显示一个颜色,鼠标离开样式没有了!

<script>

function changeColor(tid,flag){

if(flag == 'over'){

var tid = document.getElementById(tid);

tid.style.backgroundColor="gold";

}else if(flag == 'out'){

var tid = document.getElementById(tid);

tid.style.backgroundColor="white";

}

}

</script>

1.3 使用JS控制表格的行换色

1.3.1 需求

在网站的后台的表格页面中让表格显示出隔行换色的效果:

1.3.2 分析

1.3.2.1 技术分析

【使用JS控制表格】

var tab1 = Document.getElementById(“tab1”);

var rows = tab1.rows.length;

for(){

if(i % 2 == 0){

 

}

}

1.3.2.2 步骤分析

  • 步骤一确定事件:onload事件
  • 步骤二:获得表格元素
  • 步骤三:获得表格的所有行的长度
  • 步骤四:遍历表格的所有行
  • 步骤五:使用下标对2取余
  • 步骤六:设置奇数行和偶数行的颜色。

1.3.3 代码实现

<script>

window.onload = function(){

// 获得表格元素:

var tab1 = document.getElementById("tab1");

// 获得表格的所有的行数:

var len = tab1.rows.length;

// 遍历所有的长度

for(var i=0;i<len;i++){

// 判断是奇数行还是偶数行:

if(i % 2 == 0){

tab1.rows[i].style.backgroundColor = "#33FF22";

}else{

tab1.rows[i].style.backgroundColor = "#883311";

}

}

}

</script>

1.3.4 总结

表格隔行换色的时候,将最上一行也换掉了。第一行往往不需要进行换色的。

<table>

<thead>

<tr>

<th></th>

<tr>

</thead>

<tbody>

<tr>

<td></td>

<tr>

</tbody>

</table>

 

代码实现:

window.onload = function(){

// 获得表格元素:

var tab1 = document.getElementById("tab1");

// 查找表格中tbody中的所有的行数。

var len = tab1.tBodies[0].rows.length;

for(var i = 0 ;i<len ;i++){

if(i % 2 == 0){

tab1.tBodies[0].rows[i].style.backgroundColor="green";

}else{

tab1.tBodies[0].rows[i].style.backgroundColor="gold";

}

}

}

1.4 使用JS控制复选框的全选和全不选的效果

1.4.1 需求的分析

在后台管理页面中,往往会有批量删除数据的效果,就需要有复选框全选和全部选的效果。

 

1.4.2 分析

1.4.2.1 步骤分析

  • 步骤一确定事件单击事件
  • 步骤二获得下面的所有的复选框
  • 步骤三:如果上面的复选框被选中,将下面的所有的复选框选中状态变为checked=true.
  • 步骤四:如果上面的复选框没被选中,将下面的所有的复选框选中状态变为checked=false.

1.4.3 代码实现

function selectAll(){

// alert("aaa");

// 获得上面的复选框:

var sAll = document.getElementById("selectAll");

 

if(sAll.checked == true){

// 上面的复选框被选中

// 将下面的所有的复选框都被选中。

var selectOnes = document.getElementsByName("selectOne");

// 遍历数组中的每个元素,让每个元素都被选中:

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

selectOnes[i].checked = true;

}

}else{

// 上面的复选框被选中

// 将下面的所有的复选框都被选中。

var selectOnes = document.getElementsByName("selectOne");

// 遍历数组中的每个元素,让每个元素都被选中:

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

selectOnes[i].checked = false;

}

}

}

1.4.4 总结

1.4.4.1 DOM的操作

DOMDocument Object Model 文档对象模型.

HTML文档装载到内存,HTML文档形成一个DOM的树形结构.

 

 

Document:文档对象.代表的是加载到内存中的整个的文档.

方法:

l document.getElementById(“”);

l document.getElementsByName(“”);

l document.getElementsByTagName(“”);

l document.createElement(“”);

Element:元素对象.代表文档中的每个元素(标签)

<ul>

<li>北京</li>

<li>上海</li>

<li>深圳</li>

</ul>

 

属性:

l firstChild:获得其第一个孩子节点

l lastChild:获得其最后一个子节点

方法:

l appendChild();将节点添加到当前节点的最后.

l insertBefore();将节点添加到某个元素之前.

Attribute:属性对象.代表元素上的属性.

 

Document,Element,Attribute统称为Node(节点)

1.5 JS控制二级联动:

1.5.1 需求

在注册页面上有一个下拉列表,下拉列表显示省份信息,有另一个下列列表.选择某个省份,将这个省份下的城市列出.

1.5.2 分析:

1.5.2.1 技术分析

DOM创建元素】

<!DOCTYPE html>

<html>

<head>

<meta charset="UTF-8">

<title></title>

<script>

function addEl(){

// 创建元素:

var liEl = document.createElement("li");// <li></li>

// 创建文本节点:

var textEl = document.createTextNode("广州");// 广州

// 将文本放入到li元素:

liEl.appendChild(textEl);// <li>广州</li>

// 获得ul元素:

var ulEl = document.getElementById("ul1");

// li放入到ul

ulEl.appendChild(liEl);

}

</script>

</head>

<body>

<ul id="ul1">

<li>北京</li>

<li>上海</li>

<li>深圳</li>

</ul>

 

<input type="button" value="点击" onclick="addEl()"/>

</body>

</html>

【数组对象的使用】

创建数组

 

数组的属性:

 

数组的方法:

 

1.5.2.2 步骤分析

  • 步骤一确定事件onchange.
  • 步骤二:获得改变的省份值 .
  • 步骤三:比较省份的值 数组中定义的值是否相等,如果相等获得这个省份对应的所有的市的数组.
  • 步骤四:创建option元素,将数组中的值添加到option元素中。
  • 步骤五:将option添加到第二个下拉列表中.

1.5.3 代码实现

 

 

// 定义二维数组:

var cities = new Array(4);

cities[0] = new Array("长春市","吉林市","松原市","延边市");

cities[1] = new Array("济南市","青岛市","烟台市","潍坊市","淄博市");

cities[2] = new Array("石家庄市","唐山市","邯郸市","廊坊市");

cities[3] = new Array("南京市","苏州市","扬州市","无锡市");

 

function selectCity(val){

// alert(val);

var citySel = document.getElementById("city");

// 清除原有的option:

citySel.options.length = 0;

 

// 遍历数组:

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

if(val == i){

// 遍历数组:

for(var j = 0 ;j<cities[i].length;j++){

// alert(cities[i][j]);

// 创建option元素:

var opEl = document.createElement("option");

// 创建文本元素:

var textNo = document.createTextNode(cities[i][j]);

// 将文本添加到option中.

opEl.appendChild(textNo);

// option添加到第二个下拉列表中

citySel.appendChild(opEl);

}

}

}

}

1.5.4 总结

 

查看文档了解方法

 

全局函数:

 

parseInt(); 将字符串转出整型

parseFloat(); 将字符串转成小数

 

encodeURI()

decodeURI()

encodeURIComponent()

decodeURIComponent()

 

eval() :将一段字符串当成一个JS的代码来运行.

1.6 JS控制下拉列表左右选择:

1.6.1 需求

有两个列表,需要将左侧列表中的数据添加到右侧的列表中:

 

1.6.2 分析

1.6.2.1 步骤分析

  • 单击事件
  • 编写函数:获得左侧的下拉列表.
  • 遍历左侧列表中的所有的option元素.判断是否被选中。
  • 如果被选中添加到右侧.
  • 单击事件
  • 编写函数:获得左侧的下拉列表.
  • 遍历左侧的列表中的所有的option.
  • 全部添加到右侧.
原文地址:https://www.cnblogs.com/nextgg/p/7646572.html