大学生兼职网网站建设计划书,西安市市政建设网站,修改wordpress版权信息,温州网站建设服务电子商务网络公司1、JavaScript 介绍
Javascript 语言诞生主要是完成页面的数据验证。因此它运行在客户端#xff0c;需要运行浏览器来解析执行 JavaScript 代码。
JS 是 Netscape 网景公司的产品#xff0c;最早取名为 LiveScript;为了吸引更多 java 程序员。更名为 JavaScript。
JS 是弱…1、JavaScript 介绍
Javascript 语言诞生主要是完成页面的数据验证。因此它运行在客户端需要运行浏览器来解析执行 JavaScript 代码。
JS 是 Netscape 网景公司的产品最早取名为 LiveScript;为了吸引更多 java 程序员。更名为 JavaScript。
JS 是弱类型Java 是强类型。
弱类型就是类型可变
强类型就是定义变量时类型已经确定并且不可变
特点
1. 交互性它可以做的就是信息的动态交互
2. 安全性不允许直接访问本地硬盘
3. 跨平台性只要是可以解释 JS 的浏览器都可以执行和平台无关
2、JavaScript 和 html 代码的结合方式
2.1、第一种方式
只需要在 head 标签中或者在 body 标签中 使用 script 标签 来书写 JavaScript 代码
代码举例说明
!DOCTYPE html
html langen
headmeta charsetUTF-8titleTitle/titlescript typetext/javascriptalert(hello javaScript!);/script
/head
body/body
/html
运行结果如下 其中alert是JavaScript语言提供的一个警告框函数。它可以接收任意类型的参数这个参数就是警告框的提示信息
2.2、第二种方式
使用 script 标签引入 单独的 JavaScript 代码文件 文件目录
文件目录: html 代码内容
现在需要使用script引入外部的js文件来执行 src 属性专门用来引入js文件路径可以是相对路径也可以是绝对路径
!DOCTYPE html
html langen
headmeta charsetUTF-8titleTitle/titlescript typetext/javascript src1.js/script
/head
body/body
/html
运行结果如下 script 标签可以用来定义 js 代码也可以用来引入 js 文件 但是两个功能二选一使用。不能同时使用两个功能
举例我们在引入了js文件的script标签里面再写一个alter
!DOCTYPE html
html langen
headmeta charsetUTF-8titleTitle/titlescript typetext/javascript src1.jsalert(11111111111111111)/script/head
body/body
/html 运行结果 点完确定后 假如我们想实现如上代码中script标签里面弹出警告框显示11111111111111111应该怎么办
!DOCTYPE html
html langen
headmeta charsetUTF-8titleTitle/titlescript typetext/javascript src1.js/scriptscript typetext/javascriptalert(11111111111111111);/script
/head
body/body
/html
运行结果
先弹出 点击确定后 再写一个script标签就可以了代码执行顺序从上到下。
3、变量
什么是变量变量是可以存放某些值的内存的命名。
3.1JavaScript 的变量类型 数值类型 number 字符串类型 string 对象类型 object 布尔类型 boolean 函数类型 function
3.2JavaScript 里特殊的值 undefined 未定义所有 js 变量未赋于初始值的时候默认值都是 undefined. null 空值 NaN 全称是Not a Number。非数字。非数值 3.3JS 中的定义变量格式 var 变量名; var 变量名 值;
综上三点的示例代码
!DOCTYPE html
html langen
headmeta charsetUTF-8titleTitle/titlescript typetext/javascriptvar i;alert(i);/script
/head
body/body
/html
运行结果如下 typeof()是JavaScript语言提供的一个函数它可以获取变量类型的数据类型返回。 我们给i赋值并查看它的类型
!DOCTYPE html
html langen
headmeta charsetUTF-8titleTitle/titlescript typetext/javascriptvar i;alert(i);i 12;alert( typeof(i) );/script
/head
body/body
/html
运行结果 因为js是弱类型。我们给“i”赋值“abc”
!DOCTYPE html
html langen
headmeta charsetUTF-8titleTitle/titlescript typetext/javascriptvar i;alert(i);i 12;alert( typeof(i) );i abc;alert(typeof (i));/script
/head
body/body
/html
当我们将“i”赋值为“abc”查看它的类型 如果我们将一个数值跟一个字符串相乘会得到什么
!DOCTYPE html
html langen
headmeta charsetUTF-8titleTitle/titlescript typetext/javascriptvar i;alert(i);i 12;alert( typeof(i) );i abc;alert(typeof (i));var a 12;var b abc;alert( a * b );/script
/head
body/body
/html 相乘结果如下 5、关系比较运算
等于 等于是简单的做字面值的比较
全等于 除了做字面值的比较之外还会比较两个变量的数据类型
示例代码
!DOCTYPE html
html langen
headmeta charsetUTF-8titleTitle/titlescript typetext/javascriptvar a 12;var b 12;alert( a b ); // truealert( a b ); // false/script
/head
body/body
/html
运行第一个警示框 第二个 6、逻辑运算
且运算
或运算 ||
取反运算 !
在 JavaScript 语言中所有的变量都可以做为一个 boolean 类型的变量去使用。
0 、null、 undefined、(空串) 都认为是 false
举例说明
1.var a 0;
!DOCTYPE html
html langen
headmeta charsetUTF-8titleTitle/titlescript typetext/javascriptvar a 0;if (a) {alert(零为真);} else {alert(零为假);}/script
/head
body/body
/html
运行结果如下 2.var a null;
!DOCTYPE html
html langen
headmeta charsetUTF-8titleTitle/titlescript typetext/javascriptvar a null;if (a) {alert(null为真);} else {alert(null为假);}/script
/head
body/body
/html运行结果如下 3.var a undefined;
!DOCTYPE html
html langen
headmeta charsetUTF-8titleTitle/titlescript typetext/javascriptvar a undefined;if (a) {alert(undefined为真);} else {alert(undefined为假);}/script
/head
body/body
/html4a ;(空串一个空格都不能有)
!DOCTYPE html
html langen
headmeta charsetUTF-8titleTitle/titlescript typetext/javascriptvar a ;if (a) {alert(空串为真);} else {alert(空串为假);}/script
/head
body/body
/html 且运算。
有两种情况
第一种当表达式全为真的时候。返回最后一个表达式的值。
第二种当表达式中有一个为假的时候。返回第一个为假的表达式的值
第一种示例代码
!DOCTYPE html
html langen
headmeta charsetUTF-8titleTitle/titlescript typetext/javascriptvar a abc;var b true;var d false;var c null;alert( a b );//truealert( b a );//abc(true)/script
/head
body/body
/html 第二种示例代码
!DOCTYPE html
html langen
headmeta charsetUTF-8titleTitle/titlescript typetext/javascriptvar a abc;var b true;var d false;var c null;alert( a d ); // falsealert( a c ); // null/script
/head
body/body
/html
运行结果 || 或运算
第一种情况当表达式全为假时返回最后一个表达式的值
第二种情况只要有一个表达式为真。就会把回第一个为真的表达式的值
第一种情况示例
!DOCTYPE html
html langen
headmeta charsetUTF-8titleTitle/titlescript typetext/javascriptvar a abc;var b true;var d false;var c null;alert( d || c ); // nullalert( c || d ); //false/script
/head
body/body
/html 第二种示例代码
!DOCTYPE html
html langen
headmeta charsetUTF-8titleTitle/titlescript typetext/javascriptvar a abc;var b true;var d false;var c null;alert( a || c ); //abcalert( b || c ); //true/script
/head
body/body
/html 并且 与运算 和 ||或运算 有短路。
短路就是说当这个或||运算有结果了之后 。后面的表达式不再执行
7、数组*****重点
7.1、数组定义方式 JS 中 数组的定义
格式 var 数组名 []; // 空数组 var 数组名 [1 , ’abc’ , true]; // 定义数组同时赋值元素
示例代码
1:定义一个空数组
!DOCTYPE html
html langen
headmeta charsetUTF-8titleTitle/titlescript typetext/javascriptvar arr []; // 定义一个空数组alert( arr.length ); // 0/script
/head
body/body
/html 问如上数值是否还能被赋值
!DOCTYPE html
html langen
headmeta charsetUTF-8titleTitle/titlescript typetext/javascriptvar arr []; // 定义一个空数组arr[0] 12;alert( arr[0] );//12alert( arr.length ); // 0/script
/head
body/body
/html 如上示例说明JavaScript中可一个一个空数组赋值
如果我们将数组下表为2的赋值会怎么样
!DOCTYPE html
html langen
headmeta charsetUTF-8titleTitle/titlescript typetext/javascriptvar arr []; // 定义一个空数组arr[0] 12;arr[2] abc;alert(arr.length); //3/script
/head
body/body
/html 综上所述javaScript语言中的数组只要我们通过数组下标赋值那么最大的下标值就会自动的给数组做扩容操作。 我们可以看到数组下标为1的没有定义那它的值是多少
下面我们遍历一下数组
!DOCTYPE html
html langen
headmeta charsetUTF-8titleTitle/titlescript typetext/javascriptvar arr []; // 定义一个空数组arr[0] 12;arr[2] abc;for (var i 0; i arr.length; i){alert(arr[i]);}/script
/head
body/body
/html 如果定义数组时同时赋值元素是否能自动的给数组做扩容操作。 !DOCTYPE html
html langen
headmeta charsetUTF-8titleTitle/titlescript typetext/javascriptvar arr [true,1];arr[0] 12;arr[2] abc;for (var i 0; i arr.length; i){alert(arr[i]);}/script
/head
body/body
/html 综上所述定义数组时同时赋值元素是能自动的给数组做扩容操作。 注只有在赋值的时候才能做扩容操作读的时候不能。
!DOCTYPE html
html langen
headmeta charsetUTF-8titleTitle/titlescript typetext/javascriptvar arr [true,1];alert(arr[9]);// undefinedalert(arr.length);//2/script
/head
body/body
/html 8、函数(*****重点)
8.1、函数的二种定义方式
第一种可以使用 function 关键字来定义函数。
使用的格式如下:
function 函数名(形参列表){
函数体
}
示例代码
我们定义一个无参函数
!DOCTYPE html
html langen
headmeta charsetUTF-8titleTitle/titlescript typetext/javascript// 定义一个无参函数function fun(){alert(无参函数fun()被调用了);}// 函数调用了才会执行fun();/script
/head
body/body
/html 定义一个有参函数
!DOCTYPE html
html langen
headmeta charsetUTF-8titleTitle/titlescript typetext/javascript// 定义一个有参函数function fun2(a ,b) {alert(有参函数fun2()被调用了 a a ,bb);}fun2(12,abc);/script
/head
body/body
/html 在 JavaScript 语言中如何定义带有返回值的函数
只需要在函数体内直接使用 return 语句返回值即可
!DOCTYPE html
html langen
headmeta charsetUTF-8titleTitle/titlescript typetext/javascript// 定义带有返回值的函数function sum(num1,num2) {var result num1 num2;return result;}alert( sum(100,50) );/script
/head
body/body
/html 函数的第二种定义方式
使用格式如下
var 函数名 function(形参列表) { 函数体 } 示例代码
1.无参
!DOCTYPE html
html langen
headmeta charsetUTF-8titleTitle/titlescript typetext/javascriptvar fun function () {alert(无参函数);}fun();/script
/head
body/body
/html 2.有参
!DOCTYPE html
html langen
headmeta charsetUTF-8titleTitle/titlescript typetext/javascriptvar fun2 function (a,b) {alert(有参函数a a ,b b);}fun2(1,2);/script
/head
body/body
/html 3.带返回值
!DOCTYPE html
html langen
headmeta charsetUTF-8titleTitle/titlescript typetext/javascriptvar fun3 function (num1,num2) {return num1 num2;}alert( fun3(100,200) );/script
/head
body/body
/html 注在 Java 中函数允许重载。但是在 JS 中函数的重载会直接覆盖掉上一次的定义
!DOCTYPE html
html langen
headmeta charsetUTF-8titleTitle/titlescript typetext/javascriptfunction fun() {alert(无参函数fun());}function fun(a,b) {alert(有参函数fun(a,b));}fun();/script
/head
body/body
/html 我们将两个方法倒过来写
!DOCTYPE html
html langen
headmeta charsetUTF-8titleTitle/titlescript typetext/javascriptfunction fun(a,b) {alert(有参函数fun(a,b));}function fun() {alert(无参函数fun());}fun(1,abc);/script
/head
body/body
/html 综合上面两个示例我们可以知道JS 中函数的重载会直接覆盖掉上一次的定义
8.2、函数的 arguments 隐形参数只在 function 函数内
在8.1中我们写了重载的方法但是在JavaScript中函数的重载会直接覆盖掉上一次的定义而我们在调用是还为什么能传入参数
就是在 function 函数中不需要定义但却可以直接用来获取所有参数的变量。我们管它叫隐形参数。 隐形参数特别像 java 基础的可变长参数一样。
public void fun( Object ... args );
可变长参数其他是一个数组。
那么 js 中的隐形参数也跟 java 的可变长参数一样。操作类似数组。
示例代码 !DOCTYPE html
html langen
headmeta charsetUTF-8titleTitle/titlescript typetext/javascriptfunction fun() {alert(arguments.length);//可看参数个数alert(arguments[0]);alert(a a);alert(无参函数fun());}fun(1,ad,true);/script
/head
body/body
/html 隐形参数怎么用呢
需求要求 编写 一个函数。用于计算所有参数相加的和并返回 !DOCTYPE html
html langen
headmeta charsetUTF-8titleTitle/titlescript typetext/javascriptfunction sum(num1,num2) {var result 0;for (var i 0; i arguments.length; i) {result arguments[i];}return result;}alert( sum(1,2,3,4,5,6,7,8,9) );/script
/head
body/body
/html 假如我们在中间加入一个字符串 !DOCTYPE html
html langen
headmeta charsetUTF-8titleTitle/titlescript typetext/javascriptfunction sum(num1,num2) {var result 0;for (var i 0; i arguments.length; i) {result arguments[i];}return result;}alert( sum(1,2,3,4,abc,5,6,7,8,9) );/script
/head
body/body
/html 在JavaScript中数值跟字符串进行相加时是在做字符串拼接
遇到这种情况如何只将数值进行相加
!DOCTYPE html
html langen
headmeta charsetUTF-8titleTitle/titlescript typetext/javascriptfunction sum(num1,num2) {var result 0;for (var i 0; i arguments.length; i) {if (typeof(arguments[i]) number) {result arguments[i];}}return result;}alert( sum(1,2,3,4,abc,5,6,7,8,9) );/script
/head
body/body
/html
9、JS 中的自定义对象
Object 形式的自定义对象
对象的定义
var 变量名 new Object(); // 对象实例空对象
变量名.属性名 值; // 定义一个属性
变量名.函数名 function(){} // 定义一个函数
对象的访问
变量名.属性 / 函数名();
示例代码
!DOCTYPE html
html langen
headmeta charsetUTF-8titleTitle/titlescript typetext/javascriptvar obj new Object();obj.name 汤姆;obj.age 18;obj.fun function () {alert(姓名 this.name , 年龄 this.age);}alert(obj.name);obj.fun();/script
/head
body/body
/html {}花括号形式的自定义对象
对象的定义
var 变量名 {} // 空对象
var 变量名 { 属性名值, // 定义一个属性 属性名值, // 定义一个属性 函数名function(){} // 定义一个函数
};
对象的访问 变量名.属性 / 函数名();
示例代码
!DOCTYPE html
html langen
headmeta charsetUTF-8titleTitle/titlescript typetext/javascriptvar obj {name:汤姆,age:18,fun : function () {alert(姓名 this.name , 年龄 this.age);}};alert(obj.name);obj.fun();/script
/head
body/body
/html 10、js 中的事件
什么是事件
事件是电脑输入设备与页面进行交互的响应。我们称之为事件。
常用的事件
onload 加载完成事件 页面加载完成之后常用于做页面 js 代码初始化操作
onclick 单击事件 常用于按钮的点击响应操作。
onblur 失去焦点事件 常用用于输入框失去焦点后验证其输入内容是否合法。
onchange 内容发生改变事件 常用于下拉列表和输入框内容发生改变后操作
onsubmit 表单提交事件 常用于表单提交前验证所有表单项是否合法。
事件的注册又分为静态注册和动态注册两种
什么是事件的注册绑定
其实就是告诉浏览器当事件响应后要执行哪些操作代码叫事件注册或事件绑定。
静态注册事件
通过 html 标签的事件属性直接赋于事件响应后的代码这种方式我们叫静态注册。
动态注册事件
是指先通过 js 代码得到标签的 dom 对象然后再通过 dom 对象.事件名 function(){} 这种形式赋于事件 响应后的代码叫动态注册。
动态注册基本步骤 1、获取标签对象 2、标签对象.事件名 fucntion(){} onload 加载完成事件
1.静态
!DOCTYPE html
html langen
headmeta charsetUTF-8titleTitle/titlescript typetext/javascript//onload事件的方法function onloadFun(){alert(静态注册onload事件所有代码)}/script
/head
body onloadonloadFun()/body
/html 2.动态
!DOCTYPE html
html langen
headmeta charsetUTF-8titleTitle/titlescript typetext/javascript//onload事件的动态注册是固定写法window.onload function (){alert(动态注册的onload事件)}/script
/head
body/body
/html onclick 单击事件
1静态
!DOCTYPE html
html langen
headmeta charsetUTF-8titleTitle/titlescript typetext/javascriptfunction onclickFun() {alert(静态注册onclick事件);}/script
/head
body!-- 静态注册onclick事件 --button onclickonclickFun();按钮1/buttonbutton按钮2/button
/body
/html
运行点击按钮1 2动态
document 是JavaScript语言提供的一个对象文档
get 获取
Element 元素就是标签
By 通过。。 由。。经。。。
Id id属性
getElementById --- 通过id属性获取标签对象
示例代码 !DOCTYPE html
html langen
headmeta charsetUTF-8titleTitle/titlescript typetext/javascriptfunction onclickFun() {alert(静态注册onclick事件);}// 动态注册onclick事件window.onload function () {// 1 获取标签对象var btnObj document.getElementById(btn01);// 2 通过标签对象.事件名 function(){}btnObj.onclick function () {alert(动态注册的onclick事件);}}/script
/head
body
!--静态注册onClick事件--
button onclickonclickFun();按钮1/button
button idbtn01按钮2/button
/body
/html
点击按钮2 onblur 失去焦点事件 1静态
!DOCTYPE html
html langen
headmeta charsetUTF-8titleTitle/titlescript typetext/javascript// 静态注册失去焦点事件function onblurFun() {// console是控制台对象是由JavaScript语言提供专门用来向浏览器的控制器打印输出 用于测试使用// log() 是打印的方法console.log(静态注册失去焦点事件);}/script
/head
body用户名:input typetext onbluronblurFun();br/密码:input typetext br/
/body
/html
当我们点击用户名后面的方框在点击空白区 2动态
!DOCTYPE html
html langen
headmeta charsetUTF-8titleTitle/titlescript typetext/javascript// 静态注册失去焦点事件function onblurFun() {// console是控制台对象是由JavaScript语言提供专门用来向浏览器的控制器打印输出 用于测试使用// log() 是打印的方法console.log(静态注册失去焦点事件);}// 动态注册 onblur事件window.onload function () {//1 获取标签对象var passwordObj document.getElementById(password);//2 通过标签对象.事件名 function(){};passwordObj.onblur function () {console.log(动态注册失去焦点事件);}}/script
/head
body用户名:input typetext onbluronblurFun();br/密码:input idpassword typetext br/
/body
/html 当我们来回点击用户名以及密码后面的方框时 onchange 内容发生改变事件
一静态
!DOCTYPE html
html langen
headmeta charsetUTF-8titleTitle/titlescript typetext/javascriptfunction onchangeFun() {alert(女神已经改变了);}/script
/head
body请选择你心中的女神!--静态注册onchange事件--select onchangeonchangeFun();option--女神--/optionoptionaa/optionoptionbb/optionoptioncc/option/select
/body
/html 运行下拉女生框选择aa点击确定 2动态
!DOCTYPE html
html langen
headmeta charsetUTF-8titleTitle/titlescript typetext/javascriptfunction onchangeFun() {alert(女神已经改变了);}window.onload function () {//1 获取标签对象var selObj document.getElementById(sel01);//2 通过标签对象.事件名 function(){}selObj.onchange function () {alert(男神已经改变了);}}/script
/head
body请选择你心中的女神!--静态注册onchange事件--select onchangeonchangeFun();option--女神--/optionoptionaa/optionoptionbb/optionoptioncc/option/select请选择你心中的男神select idsel01option--男神--/optionoptionAA/optionoptionBB/optionoptionCC/option/select
/body
/html 跟静态的同理操作 onsubmit 表单提交事件
1静态
!DOCTYPE html
html langen
headmeta charsetUTF-8titleTitle/titlescript typetext/javascript// 静态注册表单提交事务function onsubmitFun(){alert(静态注册表单提交事件);}/script
/head
bodyform actionhttp://localhost:8080 methodget onsubmitreturn onsubmitFun();input typesubmit value静态注册//form
/body
/html
点击确定提交 如果表单不合法
!DOCTYPE html
html langen
headmeta charsetUTF-8titleTitle/titlescript typetext/javascript// 静态注册表单提交事务function onsubmitFun(){// 要验证所有表单项是否合法如果有一个不合法就阻止表单提交alert(静态注册表单提交事件----发现不合法);return flase;}/script
/head
body!--return false 可以阻止 表单提交 --form actionhttp://localhost:8080 methodget onsubmitreturn onsubmitFun();input typesubmit value静态注册//form
/body
/html
2动态
不合法如果想跳转就将false改成true
!DOCTYPE html
html langen
headmeta charsetUTF-8titleTitle/titlescript typetext/javascript // 静态注册表单提交事务function onsubmitFun(){// 要验证所有表单项是否合法如果有一个不合法就阻止表单提交alert(静态注册表单提交事件----发现不合法);return flase;}window.onload function () {//1 获取标签对象var formObj document.getElementById(form01);//2 通过标签对象.事件名 function(){}formObj.onsubmit function () {// 要验证所有表单项是否合法如果有一个不合法就阻止表单提交alert(动态注册表单提交事件----发现不合法);return false;}}/script
/head
body!--return false 可以阻止 表单提交 --form actionhttp://localhost:8080 methodget onsubmitreturn onsubmitFun();input typesubmit value静态注册//formform actionhttp://localhost:8080 idform01input typesubmit value动态注册//form/body
/html 10、DOM 模型
DOM 全称是 Document Object Model 文档对象模型
大白话就是把文档中的标签属性文本转换成为对象来管理。 那么 它们是如何实现把标签属性文本转换成为对象来管理呢。
10.1、Document 对象重点 Document 对象的理解
第一点Document 它管理了所有的 HTML 文档内容。
第二点document 它是一种树结构的文档。有层级关系。
第三点它让我们把所有的标签都对象化
第四点我们可以通过 document 访问所有的标签对象。
什么是对象化
举例 有一个人有年龄18 岁性别女名字张某某
我们要把这个人的信息对象化怎么办
Class Person { private int age; private String sex; private String name;
}
那么 html 标签 要 对象化 怎么办
bodydiv iddiv01div01/div
/body
模拟对象化相当于
class Dom{ private String id; // id 属性 private String tagName; //表示标签名 private Dom parentNode; //父类 private List children; // 子类结点 private String innerHTML; // 起始标签和结束标签中间的内容
}
10.2、Document 对象中的方法介绍重点
document.getElementById(elementId)
通过标签的 id 属性查找标签 dom 对象elementId 是标签的 id 属性值
document.getElementsByName(elementName)
通过标签的 name 属性查找标签 dom 对象elementName 标签的 name 属性值
document.getElementsByTagName(tagname)
通过标签名查找标签 dom 对象。tagname 是标签名
document.createElement( tagName)
方法通过给定的标签名创建一个标签对象。tagName 是要创建的标签名
getElementById 方法
示例代码
需求当用户点击了较验按钮要获取输出框中的内容。然后验证其是否合法。
验证的规则是必须由字母数字。下划线组成。并且长度是5到12位 !DOCTYPE html
html langen
headmeta charsetUTF-8titleTitle/titlescript typetext/javascript /** 需求当用户点击了较验按钮要获取输出框中的内容。然后验证其是否合法。br/* 验证的规则是必须由字母数字。下划线组成。并且长度是5到12位。* */function onclickFun() {// 1 当我们要操作一个标签的时候一定要先获取这个标签对象。var usernameObj document.getElementById(username);// [object HTMLInputElement] 它就是dom对象var usernameText usernameObj.value;// 如何 验证 字符串符合某个规则 需要使用正则表达式技术var patt /^\w{5,12}$/;/** test()方法用于测试某个字符串是不是匹配我的规则 * 匹配就返回true。不匹配就返回false.*/if (patt.test(usernameText)) {alert(用户名合法);} else {alert(用户名不合法);}}/script
/head
body用户名input typetext idusername valuemr/button onclickonclickFun()较验/button
/body
/html
测试 上面代码中用到了正则表达式那什么是正则表达式 我们先到帮助文档上看看
链接:https://pan.baidu.com/s/1725SNSptjfE75xEQ-4ljjA?pwd0000 提取码:0000 !DOCTYPE html
html langen
headmeta charsetUTF-8titleTitle/titlescript typetext/javascript //表示要求字符串中是否包含字母evar patt new RegExp(e);var str abcd;alert(patt.test(str));/script
/head
body/body
/html 当我们加入e
!DOCTYPE html
html langen
headmeta charsetUTF-8titleTitle/titlescript typetext/javascript //表示要求字符串中是否包含字母evar patt new RegExp(e);var str abecd;alert(patt.test(str));/script
/head
body/body
/html 我们还可以这样写
!DOCTYPE html
html langen
headmeta charsetUTF-8titleTitle/titlescript typetext/javascript //表示要求字符串中是否包含字母evar patt /e/;alert(patt);var str abecd;alert(patt.test(str));/script
/head
body/body
/html 这也是正则表达式 示例代码
!DOCTYPE html
html langen
headmeta charsetUTF-8titleTitle/titlescript typetext/javascript // 表示要求字符串中是否包含字母evar patt new RegExp(e);var patt /e/; // 也是正则表达式对象// 表示要求字符串中是否包含字母a或b或cvar patt /[abc]/;// 表示要求字符串是否包含小写字母var patt /[a-z]/;// 表示要求字符串是否包含任意大写字母var patt /[A-Z]/;// 表示要求字符串是否包含任意数字var patt /[0-9]/;/script
/head
body/body
/html 我们看一下\w 量词示例代码
!DOCTYPE html
html langen
headmeta charsetUTF-8titleTitle/titlescript typetext/javascript // 表示要求 字符串中是否包含至少一个avar patt /a/;// 表示要求 字符串中是否 *包含* 零个 或 多个avar patt /a*/;// 表示要求 字符串是否包含一个或零个avar patt /a?/;// 表示要求 字符串是否包含连续三个avar patt /a{3}/;// 表示要求 字符串是否包 至少3个连续的a最多5个连续的avar patt /a{3,5}/;// 表示要求 字符串是否包 至少3个连续的avar patt /a{3,}/;// 表示要求 字符串必须以a结尾var patt /a$/;// 表示要求 字符串必须以a打头var patt /^a/;// 要求字符串中是否包含 至少3个连续的avar patt /a{3,5}/;// 要求字符串从头到尾都必须完全匹配var patt /^a{3,5}$/;/script
/head
body/body
/html 回到什么的需求我们再进行优化一下导入两张图片 需求当用户点击了较验按钮要获取输出框中的内容。然后验证其是否合法。
验证的规则是必须由字母数字。下划线组成。并且长度是5到12位 代码如下
!DOCTYPE html
html langen
headmeta charsetUTF-8titleTitle/titlescript typetext/javascript function onclickFun() {// 1 当我们要操作一个标签的时候一定要先获取这个标签对象。var usernameObj document.getElementById(username);// [object HTMLInputElement] 它就是dom对象var usernameText usernameObj.value;// 如何 验证 字符串符合某个规则 需要使用正则表达式技术var patt /^\w{5,12}$/;/** test()方法用于测试某个字符串是不是匹配我的规则 * 匹配就返回true。不匹配就返回false.* */var usernameSpanObj document.getElementById(usernameSpan);// innerHTML 表示起始标签和结束标签中的内容// innerHTML 这个属性可读可写usernameSpanObj.innerHTML 哈哈哈哈哈哈;if (patt.test(usernameText)) {// alert(用户名合法);// usernameSpanObj.innerHTML 用户名合法;usernameSpanObj.innerHTML img src\right.png\ width\18\ height\18\;} else {// alert(用户名不合法);// usernameSpanObj.innerHTML 用户名不合法;usernameSpanObj.innerHTML img src\wrong.png\ width\18\ height\18\;}}/script
/head
body用户名input typetext idusername valuemr/span idusernameSpan stylecolor:red;/spanbutton onclickonclickFun()较验/button
/body
/html getElementsByName 方法
定义三个复选框实现全选全不选跟反选的功能
示例代码
!DOCTYPE html
html langen
headmeta charsetUTF-8titleTitle/titlescript typetext/javascript// 全选function checkAll() {// 让所有复选框都选中// document.getElementsByName();是根据 指定的name属性查询返回多个标签对象集合// 这个集合的操作跟数组 一样// 集合中每个元素都是dom对象// 这个集合中的元素顺序是他们在html页面中从上到下的顺序var hobbies document.getElementsByName(hobby);// checked表示复选框的选中状态。如果选中是true不选中是false// checked 这个属性可读可写for (var i 0; i hobbies.length; i){hobbies[i].checked true;}}//全不选function checkNo() {var hobbies document.getElementsByName(hobby);// checked表示复选框的选中状态。如果选中是true不选中是false// checked 这个属性可读可写for (var i 0; i hobbies.length; i){hobbies[i].checked false;}}// 反选function checkReverse() {var hobbies document.getElementsByName(hobby);for (var i 0; i hobbies.length; i) {hobbies[i].checked !hobbies[i].checked;// if (hobbies[i].checked) {// hobbies[i].checked false;// }else {// hobbies[i].checked true;// }}}/script
/head
body兴趣爱好input typecheckbox namehobby valuecpp checkedcheckedCinput typecheckbox namehobby valuejavaJavainput typecheckbox namehobby valuejsJavaScriptbr/button onclickcheckAll()全选/buttonbutton onclickcheckNo()全不选/buttonbutton onclickcheckReverse()反选/button
/body
/html
getElementsByTagName 方法 定义三个复选框实现全选功能
!DOCTYPE html
html langen
headmeta charsetUTF-8titleTitle/titlescript typetext/javascript// 全选function checkAll() {alert( document.getElementById(btn01) );// document.getElementsByTagName(input);// 是按照指定标签名来进行查询并返回集合// 这个集合的操作跟数组 一样// 集合中都是dom对象// 集合中元素顺序 是他们在html页面中从上到下的顺序。var inputs document.getElementsByTagName(input);for (var i 0; i inputs.length; i){inputs[i].checked true;}}/script
/head
body!--as --兴趣爱好input typecheckbox valuecpp checkedcheckedCinput typecheckbox valuejavaJavainput typecheckbox valuejsJavaScriptbr/button idbtn01 onclickcheckAll()全选/button/body
/html
注
document 对象的三个查询方法如果有 id 属性优先使用 getElementById 方法来进行查询
如果没有 id 属性则优先使用 getElementsByName 方法来进行查询
如果 id 属性和 name 属性都没有最后再按标签名查 getElementsByTagName
以上三个方法一定要在页面加载完成之后执行才能查询到标签对象。 10.3、节点的常用属性和方法
节点就是标签对象
方法
通过具体的元素节点调用
getElementsByTagName()
方法获取当前节点的指定标签名孩子节点
appendChild( oChildNode )
方法可以添加一个子节点oChildNode 是要添加的孩子节点
属性
childNodes
属性获取当前节点的所有子节点
firstChild
属性获取当前节点的第一个子节点
lastChild
属性获取当前节点的最后一个子节点
parentNode
属性获取当前节点的父节点
nextSibling
属性获取当前节点的下一个节点
previousSibling
属性获取当前节点的上一个节点
className
用于获取或设置标签的 class 属性值
innerHTML
属性表示获取/设置起始标签和结束标签中的内容
innerText
属性表示获取/设置起始标签和结束标签中的文本
示例代码
!DOCTYPE html
html
head
meta charsetUTF-8
titledom查询/title
link relstylesheet typetext/css hrefstyle/css.css /
script typetext/javascriptwindow.onload function(){//1.查找#bj节点document.getElementById(btn01).onclick function () {var bjObj document.getElementById(bj);alert(bjObj.innerHTML);}//2.查找所有li节点var btn02Ele document.getElementById(btn02);btn02Ele.onclick function(){var lis document.getElementsByTagName(li);alert(lis.length)};//3.查找namegender的所有节点var btn03Ele document.getElementById(btn03);btn03Ele.onclick function(){var genders document.getElementsByName(gender);alert(genders.length)};//4.查找#city下所有li节点var btn04Ele document.getElementById(btn04);btn04Ele.onclick function(){//1 获取id为city的节点//2 通过city节点.getElementsByTagName按标签名查子节点var lis document.getElementById(city).getElementsByTagName(li);alert(lis.length)};//5.返回#city的所有子节点var btn05Ele document.getElementById(btn05);btn05Ele.onclick function(){//1 获取id为city的节点//2 通过city获取所有子节点alert(document.getElementById(city).childNodes.length);};//6.返回#phone的第一个子节点var btn06Ele document.getElementById(btn06);btn06Ele.onclick function(){// 查询id为phone的节点alert( document.getElementById(phone).firstChild.innerHTML );};//7.返回#bj的父节点var btn07Ele document.getElementById(btn07);btn07Ele.onclick function(){//1 查询id为bj的节点var bjObj document.getElementById(bj);//2 bj节点获取父节点alert( bjObj.parentNode.innerHTML );};//8.返回#android的前一个兄弟节点var btn08Ele document.getElementById(btn08);btn08Ele.onclick function(){// 获取id为android的节点// 通过android节点获取前面兄弟节点alert( document.getElementById(android).previousSibling.innerHTML );};//9.读取#username的value属性值var btn09Ele document.getElementById(btn09);btn09Ele.onclick function(){alert(document.getElementById(username).value);};//10.设置#username的value属性值var btn10Ele document.getElementById(btn10);btn10Ele.onclick function(){document.getElementById(username).value 哈哈哈哈哈哈;};//11.返回#bj的文本值var btn11Ele document.getElementById(btn11);btn11Ele.onclick function(){alert(document.getElementById(city).innerHTML);// alert(document.getElementById(city).innerText);};};
/script
/head
body
div idtotaldiv classinnerp你喜欢哪个城市?/pul idcityli idbj北京/lili上海/lili东京/lili首尔/li/ulbrbrp你喜欢哪款单机游戏?/pul idgameli idrl红警/lili实况/lili极品飞车/lili魔兽/li/ulbr /br /p你手机的操作系统是?/pul idphoneliIOS/lili idandroidAndroid/liliWindows Phone/li/ul/divdiv classinnergender:input typeradio namegender valuemale/Maleinput typeradio namegender valuefemale/Femalebrbrname:input typetext namename idusername valueabcde//div
/div
div idbtnListdivbutton idbtn01查找#bj节点/button/divdivbutton idbtn02查找所有li节点/button/divdivbutton idbtn03查找namegender的所有节点/button/divdivbutton idbtn04查找#city下所有li节点/button/divdivbutton idbtn05返回#city的所有子节点/button/divdivbutton idbtn06返回#phone的第一个子节点/button/divdivbutton idbtn07返回#bj的父节点/button/divdivbutton idbtn08返回#android的前一个兄弟节点/button/divdivbutton idbtn09返回#username的value属性值/button/divdivbutton idbtn10设置#username的value属性值/button/divdivbutton idbtn11返回#bj的文本值/button/div
/div
/body
/html
document对象补充说明
现在需要我们使用js代码来创建html标签并显示在页面上标签的内容就是
div哈哈哈哈哈/div
!DOCTYPE html
html langen
headmeta charsetUTF-8titleTitle/titlescript typetext/javascriptwindow.onload function () {// 现在需要我们使用js代码来创建html标签并显示在页面上// 标签的内容就是div哈哈哈哈哈/divvar divObj document.createElement(div); // 在内存中 div/divvar textNodeObj document.createTextNode(哈哈哈哈哈); // 有一个文本节点对象 #哈哈哈哈哈// 添加子元素document.body.appendChild(divObj);}/script
/head
body/body
/html
文本也是一个节点所以还可以这么写
!DOCTYPE html
html langen
headmeta charsetUTF-8titleTitle/titlescript typetext/javascriptwindow.onload function () {// 现在需要我们使用js代码来创建html标签并显示在页面上// 标签的内容就是div哈哈哈哈哈/divvar divObj document.createElement(div); // 在内存中 div/divvar textNodeObj document.createTextNode(哈哈哈哈哈); // 有一个文本节点对象 #哈哈哈哈哈divObj.appendChild(textNodeObj); // div哈哈哈哈哈/div// divObj.innerHTML 哈哈哈哈哈; // div哈哈哈哈哈/div,但还只是在内存中// 添加子元素document.body.appendChild(divObj);}/script
/head
body/body
/html 感谢观看