第3章WEB03- JS篇

今日任务

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

教学导航

教学目标

掌握JS中的BOM对象

掌握JS中的常用的事件

掌握JS中的常用DOM操作

了解JS中的内置对象

教学方法

案例驱动法

1.1      上次课内容回顾:

CSS:

* CSS的概述:层叠样式表.

* 修饰HTML的页面.使页面与样式分离.

* CSS的语法:

* 选择器{属性名:属性值;属性名:属性值;...}

* CSS的引入方式:

* 行内样式:在html元素上使用style属性设置

* 内部样式:在html中使用<style></style>进行设置

* 外部样式:定义一个css文件,在html中引入该文件.<link href=”” type=”” rel=””/>

* CSS的选择器:(****)

* 元素选择器:

* ID选择器:

* 类选择器:

* 后代选择器:

* 子元素选择器:

* CSS的样式:

* 文本

* 背景

* 字体

* 列表

* CSS的盒子模型:

* 内边距:padding

* 边框:border

* 外边距:margin

* CSS的悬浮和定位:

* 悬浮:float属性设置悬浮.

* 清除悬浮:clear属性清除.

* 定位:position属性设置定位.

* 使用left和top属性控制位置.

* display属性:控制元素的显示方式:

* block--显示的, none--隐藏的,inline--显示到一行.

JS:

* JS的概述:JavaScript运行在浏览器端脚本语言.

* JS的历史:由网景公司研发的.由ECMA组织统一标准:ECMAScript.

* JS的组成:ECMAScript,BOM,DOM.

* JS的语法:

* JS的变量声明:

* JS的数据类型:

* 原始类型:undefined,boolean,string,number,null

* 引用类型:

* JS的运算符:

* 与java中基本一致.有一个 === 类型与值都相同的情况下才会为true.

* JS的语句:

* 与Java中的语句一致.

* 简单的表单校验:

* 正则的校验:使用String的match方法和正则中的test方法.

1.2      案例一:使用JS完成图片的轮播的效果:

1.2.1    需求:

1.2.2    分析:

1.2.2.1  技术分析:

【JS中的Window对象的定时的操作】

* 设置定时的方法

* 清除定时的方法

1.2.2.2  步骤分析:

【步骤一】创建一个HTML文件

【步骤二】当页面加载的时候开始计时.使用onload事件.

【步骤三】编写onload事件触发的函数.

【步骤四】获得操作图片的控制权.

【步骤五】修改图片的src的属性.

1.2.3    代码实现:

<script>

window.onload = function(){

// 设置定时:

window.setInterval("changeImg()",5000);

}

var i = 1;

function changeImg(){

i++;

// 获得图片的控制权:

if(i > 3){

i=1;

}

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

img1.src="../img/"+i+".jpg";

}

</script>

1.3      案例二:使用JS实现定时弹出广告定时隐藏.

1.3.1    需求:

在网站的首页上定时弹出一个广告,并且定时隐藏掉.

1.3.2    分析:

1.3.2.1  技术分析:

【JS的window对象的定时的方法】

* 设置定时的方法

* 清除定时的方法

【CSS的显示和隐藏的属性】

* display

* block:显示元素:

* none:隐藏元素:

1.3.2.2  步骤分析:

【步骤一】创建一个HTML页面

【步骤二】确定事件:页面的加载事件

【步骤三】触发一个函数,编写该函数.

【步骤四】在函数中设置定时操作.定时执行一个显示的函数.

【步骤五】清空定时,重新设置定时,5秒钟隐藏.

1.3.3    代码实现:

var time;

window.onload = function(){

time = window.setInterval("show()",5000);

}

// 显示广告的方法

function show(){

// 获得广告的div元素:

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

adDiv.style.display = "block";

window.clearInterval(time);

time = window.setInterval("hide()",5000);

}

// 隐藏广告的方法:

function hide(){

// 获得广告的div元素:

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

adDiv.style.display="none";

window.clearInterval(time);

}

1.3.4    总结:

1.3.4.1  JS中的BOM对象:

  • Window

* alert();      --弹出对话框

* setInterval();

* setTimeout();

* clearInterval();

* clearTimeout();

* confirm();    --弹出一个确认窗口

* prompt();     --弹出一个可输入的对话框

* open();       --打开一个新窗口

  • Navigator :包含的是浏览器的信息.
  • Screen:用来获得屏幕信息:
  • History:浏览器的历史对象:
  • Location:包含URL信息的对象

1.4      使用JS完成注册页面表单提示及校验

1.4.1    需求:

注册页面之前是弹出对话框的形式进行校验的这种方式不是特别友好!可以将错误信息显示到文本框的后面.而且当光标落入到文本框的时候,提示的信息.

1.4.2    分析:

1.4.2.1  技术分析:

【JS的输出】

* document.getElementById(“”).innerHTML=”HTML的代码”;

* document.write(“”);

【JS的事件】

* onfocus   :获得焦点.

* onblur    :失去焦点.

* onsubmit  :提交的时候.

1.4.2.2  步骤分析:

【步骤一】创建一个html文档

【步骤二】在要去校验的文本框上添加事件.

【步骤三】触发函数

【步骤四】在函数中向文本框后的html的区域中写入一段提示的内容.

1.4.3    代码实现:

function tips(id,content){

document.getElementById(id+"Span").innerHTML = "<font color='red'>"+content+"</font>";

}

function checkForm(){

// 判断用户名不能为空:

var username = document.getElementById("username").value;

if(username == ""){

document.getElementById("usernameSpan").innerHTML = "<font color='red'>用户名不能为空!</font>";

return false;

}

var password = document.getElementById("password").value;

if(password == ""){

document.getElementById("passwordSpan").innerHTML = "<font color='red'>密码不能为空!</font>";

return false;

}

}

1.4.4    总结:

1.4.4.1  JS的事件的总结:

* onload    :

* onclick   :

* onsubmit  :

* onfocus   :

* onblur    :

* onchange  :下拉列表改变事件.

* ondblclick:双击某个元素的事件.

键盘操作事件:

* onkeydown :

* onkeyup   :

* onkeypress:

鼠标操作事件:

* onmousemove:

* onmouseout:

* onmouseover:

* onmousedown

* onmouseup

1.5      案例四:使用JS完成后台数据展示的隔行换色的表格:

1.5.1    需求:

在后台展示数据的页面上,通常使用表格标签进行数据的展示.没有背景的表格比较难看的,可以使用JS控制表格的隔行换色.

1.5.2    分析:

1.5.2.1  技术分析:

【使用JS获得表格的行数】

* 获得到控制的表格元素:

* var tab1 = document.getElementById(“tab1”);

* var len = tab1.rows.length;

1.5.2.2  步骤分析:

【步骤一】创建一个HTML页面:可以使用后台设计页面.

【步骤二】确定事件:onload事件.

【步骤三】触发一个函数.在这个函数中获得操作的表格.

【步骤四】获得表格中的所有的行数.

【步骤五】遍历表格的行数.

【步骤六】判断是否是奇数行还是偶数行.

1.5.3    代码实现:

function changeColor(){

// 获得要操作的对象的控制权:

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

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

var count = tab1.rows.length;

// 遍历每行:

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

if(i % 2 == 0){

// 偶数行

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

}else{

// 奇数行

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

}

}

}

1.5.4    总结:

1.5.4.1  表格中的tbody和thead标签

function changeColor(){

// 获得操作的表格的控制权:

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.6      案例五:使用JS完成复选框的全选和全不选的效果

1.6.1    需求:

在实际的开发中一条记录一条记录进行删除的话,效率很低,有的时候需要一起删除多条记录.需要通过在表格之前设置一个复选框的形式进行勾选复选框.点击一个删除的按钮.

1.6.2    分析:

1.6.2.1  技术分析:

1.6.2.2  步骤分析:

【步骤一】创建一个HTML页面.

【步骤二】确定事件:复选框的单击事件.

【步骤三】触发一个函数

【步骤四】在函数中,获得上面的复选框是否被选中.

【步骤五】如果选中,下面的所有的复选框都被选中.

【步骤六】如果不选中,下面的所有的复选框都不选中.

1.6.3    代码实现:

function checkAll(){

// 获得上面的复选框

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

// 判断这个复选框是否被选中.

var ids = document.getElementsByName("ids");

if(selectAll.checked == true){

// 上面复选框被选中:获得下面所有的复选框,修改checked属性

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

ids[i].checked = true;

}

}else{

// 上面复选框没有被选中:获得下面所有的复选框,修改checked属性

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

ids[i].checked = false;

}

}

}

1.6.4    总结:

1.6.4.1  JS中的DOM对象:

【DOM的概述】

  • 什么是DOM

DOM:Document Object Model:文档对象模型.

将一个HTML的文档加载到内存形成一个树形结构,从而操作树形结构就可以改变HTML的样子.

  • DOM的使用:

知道document,element,attribute中的属性和方法

【DOM的常用的操作】

  • 获得元素:

* document.getElementById();        -- 通过ID获得元素.

* document.getElementsByName();     -- 通过name属性获得元素.

* document.getElementsByTagName();  -- 通过标签名获得元素.

  • 创建元素:

* document.createElement();         -- 创建元素

* document.createTextNode();        -- 创建文本

  • 添加节点:

* element.appendChild();            -- 在最后添加一个节点.

* element.insertBefore();           -- 在某个元素之前插入.

  • 删除节点:

* element.removeChild();            -- 删除元素

【使用DOM完成对ul中添加一个li元素】

function addElement(){

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

// 创建一个元素:

var liEl = document.createElement("li");

// 创建一个文本节点:

var text = document.createTextNode("深圳");

// 添加子节点:

liEl.appendChild(text);

city.appendChild(liEl);

}

1.7      案例六:使用JS完成省市联动的效果:

1.7.1    需求:

在注册页面上有两个下拉列表,左侧省份的下拉列表一改变,右侧的市的下拉列表也要跟着发生变化.

1.7.2    分析:

1.7.2.1  技术分析:

【JS中创建数组】

【JS的事件】

下拉的列表的改变的事件.onchange.

【JS的DOM的操作】

创建元素:

添加元素:

1.7.2.2  步骤分析

【步骤一】创建一个HTML文件.

【步骤二】确定事件:onchange事件.

【步骤三】触发函数,在函数中编写代码.

【步骤四】获得到所选择的省份的信息.

【步骤五】根据选择的省份的信息获得到对应的数组中的市的数据.

【步骤六】遍历数组中的市的信息.

【步骤七】创建元素,创建文本,最后将元素添加到第二个列表中.

1.7.3    代码实现:

// 定义数组:二维数组:

var arrs = new Array(5);

arrs[0] = new Array("杭州市","绍兴市","温州市","义乌市","嘉兴市");

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

arrs[2] = new Array("武汉市","襄阳市","荆州市","宜昌市","恩施");

arrs[3] = new Array("石家庄市","唐山市","保定市","邢台市","廊坊市");

arrs[4] = new Array("长春市","吉林市","四平市","延边市");

function changeCity(value){

// 获得到选中的省份的信息.

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

// 清除第二个列表中的内容:

for(var i=city.options.length;i>0;i--){

city.options[i] = null;

}

// city.options.length = 0;

// alert(value);

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

if(value == i){

// 获得所有的市的信息.

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

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

// 创建元素:

var opEl = document.createElement("option");// <option></option>

// 创建文本节点:

var textNode = document.createTextNode(arrs[i][j]);

// 将文本的内容添加到option元素中.

opEl.appendChild(textNode);

// 将option的元素添加到第二个列表中.

city.appendChild(opEl);

}

}

}

}

1.7.4    总结:

1.7.4.1  JS的内置对象:

  • Array:
  • Boolean:
  • Date:

* http://www.baidu.com?time=new Date().getTime();

  • Math对象:
  • String对象:

* charAt();

* indexOf();

* lastIndexOf();

* split();

* replace();

* substring();

* substr();

1.7.4.2  JS的全局函数:

* parseInt();

* parseInt(“11”);

* parseFloat();

* parseFloat(“32.09”);

* 编码和解码的方法:

// 解码

* decodeURI();

* decodeURIComponent();

// 编码

* encodeURI();

* encodeURIComponent();

eval函数:

* 将一段内容当成是JS的代码执行.

//var sss = “alert(‘aaaa’)”;

//eval(sss);

web-day3的更多相关文章

  1. [红日安全]Web安全Day3 - CSRF实战攻防

    本文由红日安全成员: Once 编写,如有不当,还望斧正. 大家好,我们是红日安全-Web安全攻防小组.此项目是关于Web安全的系列文章分享,还包含一个HTB靶场供大家练习,我们给这个项目起了一个名字 ...

  2. Web大前端面试题-Day3

    1. javascript的typeof返回哪些数据类型? 答案: undefined string boolean number symbol(ES6) Object Function 2. 列举3 ...

  3. 撩课-Web大前端每天5道面试题-Day3

    1. javascript的typeof返回哪些数据类型? 答案: undefined string boolean number symbol(ES6) Object Function 2. 列举3 ...

  4. [译]36 Days of Web Testing(一)

    [前言]最近负责的一次迭代发布中,一个小需求涉及前端JS改动,在测试这个需求的过程中忽略了浏览器兼容性测试,导致了一个线上bug.恶补下web测试,<36Days of web testing& ...

  5. Bugku-CTF之web基础$_GET

    Day3   web基础$_GET   http://123.206.87.240:8002/get/   打开之后是一段代码  

  6. python2.0 s12 day3

    s12 day3 视频每节的内容 03 python s12 day3 本节内容概要 第三天的主要内容 上节没讲完的: 6.集合 7.collections 1)计数器 2)有序字典 3)默认字典 4 ...

  7. 黑盒测试实践--Day3 11.27

    黑盒测试实践--Day3 今天完成任务情况: 收到小组紧急通知,作业要求更新了.组长召集大家在下午课后去开个短会,会议信息如下: 时间:11.27 晚上5:30 地点:东九楼501 会议内容: 学习了 ...

  8. Django文档阅读-Day3

    Django文档阅读-Day3 Writing your first Django app, part 3 Overview A view is a "type" of Web p ...

  9. C# Web应用调试开启外部访问

    在用C#开发Web应用时有个痛点,就是本机用VS开启Web应用调试时外部机器无法访问此Web应用.这里将会介绍如何通过设置允许局域网和外网机器访问本机的Web应用. 目录 1. 设置内网访问 2. 设 ...

  10. 网页提交中文到WEB容器的经历了些什么过程....

    先准备一个网页 <html><meta http-equiv="Content-Type" content="text/html; charset=gb ...

随机推荐

  1. Informatica_(2)第一个例子

    PowerCenter Repository Manager1.启动客户端程序连接服务器打开客户端(PowerCenter Repository Manager)PCRM;存储库--配置域--添加新域 ...

  2. PAT 1025 反转链表 (25)(STL-map+思路+测试点分析)

    1025 反转链表 (25)(25 分) 给定一个常数K以及一个单链表L,请编写程序将L中每K个结点反转.例如:给定L为1→2→3→4→5→6,K为3,则输出应该为3→2→1→6→5→4:如果K为4, ...

  3. javascript 高级程序设计 五

    1.变量: ECMAScript中的基本类型都是值类型Boolean,Number,Null,Undefined和String,在这里JS和其他的语言有所不同,就是JS中的String是值类型 而不像 ...

  4. (O)JS:执行环境、变量对象、活动对象和作用域链(原创)

    var a=1; function b(x){ var c=2; console.log(x); } b(3); ·执行环境(execution context),也称为环境.执行上下文.上下文环境. ...

  5. hisat2+stringtie+ballgown

    hisat2+stringtie+ballgown Posted on 2016年11月25日 早在去年九月,我就写个博文说 RNA-seq流程需要进化啦!http://www.bio-info-tr ...

  6. 简单理解RNA-seq

    简单理解RNA-seq 刘小泽 已关注 2018.10.17 23:51* 字数 1518 阅读 46评论 0喜欢 3 今天就当一个小故事看吧,看了statQuest,感觉讲的很棒,于是分享给大家原版 ...

  7. 立即响应ScrollView上的子视图的手势

    self.myScrollView.delaysContentTouches = YES; self.myScrollView.CanCancelContentTouches=NO; 写了一个继承sc ...

  8. UI设计初学者教程:色彩基础知识

    编辑:千锋UI设计 初学设计都会先认识三原色,通常我们说的三原色指的是颜料三原色:红.黄.蓝:其实三原色还有色光三原色:红.绿.蓝.我们通常说的红黄蓝就是减色法三原色,而红绿蓝是加色法三原色.可能这么 ...

  9. Docker虚拟化实战学习——基础篇(转)

    Docker虚拟化实战学习——基础篇 2018年05月26日 02:17:24 北纬34度停留 阅读数:773更多 个人分类: Docker   Docker虚拟化实战和企业案例演练 深入剖析虚拟化技 ...

  10. Mockplus3.5.0.1新增标注功能

    Mockplus3.5.0.1版本中,新增了标注功能.多种标注模式,智能生成,随时查看.原型设计效率更高. Mockplus的标注功能有以下四种模式: 1.无选中标注 在未选中任何组件时,按住Ctrl ...