> 文档中心 > 【JavaWeb】JavaScript

【JavaWeb】JavaScript

目录

一、JavaScript 介绍

二、JavaScript 和 html 代码的结合方式

2.1、第一种方式

2.2、第二种方式

三、变量

四、关系(比较)运算

五、逻辑运算

六、数组

七、函数

7.1、函数的二种定义方式

7.2、函数的 arguments 隐形参数(只在 function 函数内)

八、JS 中的自定义对象

8.1、Object 形式的自定义对象

8.2、{}花括号形式的自定义对象

九、JS 中的事件

十、DOM 模型

10.1、Document 对象

10.2、Document 对象中的方法介绍

10.3、节点的常用属性和方法


一、JavaScript 介绍

Javascript 语言诞生主要是完成页面的数据验证。因此它运行在客户端,需要运行浏览器来解析执行 JavaScript 代码。 JS 是 Netscape 网景公司的产品,最早取名为 LiveScript;为了吸引更多 java 程序员。更名为 JavaScript。 JS 是弱类型, Java 是强类型。 特点: 1. 交互性(它可以做的就是信息的动态交互) 2. 安全性(不允许直接访问本地硬盘) 3. 跨平台性(只要是可以解释 JS 的浏览器都可以执行,和平台无关)


二、JavaScript html 代码的结合方式

2.1、第一种方式

只需要在 head 标签中,或者在 body 标签中, 使用 script 标签 来书写 JavaScript 代码。

        Title     // alert是JavaScript语言提供的一个警告框函数 // 它可以接收任意类型的参数, 这个参数就是警告框的提示信息 alert("hello javascript!");    

2.2、第二种方式

使用 script 标签引入 单独的 JavaScript 代码文件

        Title                 alert("hh");             alert("hh");    // 这里不好执行, 只会执行1.js    

三、变量

什么是变量?变量是可以存放某些值的内存的命名。 JavaScript 的变量类型: 数值类型:                 number 字符串类型:              string 对象类型:                 object 布尔类型:                 boolean 函数类型:                 function JavaScript 里特殊的值: undefined         未定义,所有 js 变量未赋于初始值的时候,默认值都是 undefined. null                   空值 NaN                 全称是:Not a Number。非数字。非数值。 JS 中的定义变量格式: var 变量名 ; var 变量名 = ;

        Title     var i; alert(i);   // undefined i = 12; alert(i);   // 12 // typeof() 是javascript语言提供的一个函数 // 它可以取变量的数据类型返回 alert(typeof(i));   // number i = "abc"; alert(typeof(i));   // string var a = 12; var b = "abc"; alert(a * b);   // NaN    

四、关系(比较)运算

等于:             ==           等于是简单的做字面值的比较 全等于:         ===         除了做字面值的比较之外,还会比较两个变量的数据类型

        Title     var a = "12"; var b = 12; alert(a == b);  // true alert(a === b); // false    

五、逻辑运算

且运算:         && 或运算:         || 取反运算:      ! JavaScript 语言中,所有的变量,都可以做为一个 boolean 类型的变量去使用。 0 nullundefined””(空串) 都认为是 false && 且运算 有两种情况: 第一种:当表达式全为真的时候。返回最后一个表达式的值。 第二种:当表达式中,有一个为假的时候。返回第一个为假的表达式的值 || 或运算 第一种情况:当表达式全为假时,返回最后一个表达式的值 第二种情况:只要有一个表达式为真。就会把回第一个为真的表达式的值 并且 && 与运算 和 | | 或运算 有短路。 短路就是说,当这个&&或||运算有结果了之后 。后面的表达式不再执行

        Title     var a = 0; if(a) {     alert("零为真"); } else {     alert("零为假") } var b = null; if(b) {     alert("null为真"); } else {     alert("null为假"); } var c = undefined; if(c) {     alert("undefined为真"); } else {     alert("undefined为假"); } var d = ""; if(d) {     alert("空串为真"); } else {     alert("空串为假"); } var e = "abc"; var f = true; var g = false; var h = null; alert(e && f);  // true alert(f && e);  // abc alert(e && h);  // null alert(e && h && g); // null alert(h || g);  // false alert(g || h);  // null;    

六、数组

JS 中 数组的定义:         格式:                 var 数组名 = []; // 空数组                 var 数组名 = [1 , ’abc’ , true];                 // 定义数组同时赋值元素

        Title     var arr = []; alert(arr.length);  // 0 arr[0] = 12; alert(arr[0]);  // 12 alert(arr.length);  // 1 // javascript语言中的数组, 只要我们通过数组下标赋值, 那么最大的下标值, 就会自动的给数组做扩容操作 arr[2] = "abc"; alert(arr.length);  // 3 alert(arr[1]);  // undefined for(var i = 0; i < arr.length; i++) {     alert(arr[i]); }    

七、函数

7.1、函数的二种定义方式

第一种,可以使用 function 关键字来定义函数。 使用的格式如下 :         function 函数名 ( 形参列表 ){                 函数体         } JavaScript 语言中,如何定义带有返回值的函数? 只需要在函数体内直接使用 return 语句返回值即可!

        Title     // 定义一个无参函数 function fun() {     alert("无参函数fun()被调用了"); } // 函数调用才会执行 fun(); function fun2(a, b) {     alert("有参函数fun2()被调用了"); } fun2(12, "abc"); // 定义带有返回值的函数 function sum(num1, num2) {     var result = num1 + num2;     return result; } alert(sum(100, 50));    

函数的第二种定义方式,格式如下: 使用格式如下:         var 函数名 = function( 形参列表 ) { 函数体 }

        Title     var fun = function () {     alert("无参函数"); } fun(); var  fun2 = function (a, b) {     alert("有参函数 a = " + a + ", b = " + b); } fun2(1, 2); var fun3 = function (num1, num2) {     return num1 + num2; } alert(fun3(1, 2));    

注:在 Java 中函数允许重载。但是在 JS 中函数的重载会直接覆盖掉上一次的定义

        Title     function fun() {     alert("无参函数"); } function fun(a, b) {     alert("有参函数") } fun();    

7.2函数的 arguments 隐形参数(只在 function 函数内)

就是在 function 函数中不需要定义,但却可以直接用来获取所有参数的变量。我们管它叫隐形参数。 隐形参数特别像 java 基础的可变长参数一样。 public void fun( Object ... args ); 可变长参数其他是一个数组。 那么 js 中的隐形参数也跟 java 的可变长参数一样。操作类似数组。

        Title     function fun() {     alert(arguments);   // [object Arguments]     alert(arguments.length);     alert(arguments[2]);     alert("无参函数fun()") } fun(1, "12", true); // 需求:要求 编写 一个函数。用于计算所有参数相加的和并返回 function 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) );    

八、JS 中的自定义对象

8.1、Object 形式的自定义对象

对象的定义:         var 变量名 = new Object();         // 对象实例(空对象)         变量名. 属性名 = 值;                    // 定义一个属性         变量名. 函数名 = function(){}       // 定义一个函数 对象的访问:         变量名. 属性 / 函数名 ();

        Title     var obj = new Object(); obj.name = "Specter"; obj.age = 18; obj.fun = function () {     alert("姓名: " + obj.name + ", 年龄: " + this.age); } obj.fun();    

8.2、{}花括号形式的自定义对象

对象的定义: var 变量名 = {         // 空对象         属性名:值,         // 定义一个属性         属性名:值,         // 定义一个属性         函数名:function(){}         // 定义一个函数 }; 对象的访问:         变量名. 属性 / 函数名 ();

        Title     var obj = {}; alert(typeof (obj)); var obj2 = {     name: "Specter",     age: 18,     fun: function () {  alert("姓名: " + obj2.name + ", 年龄: " + this.age);     } } alert(obj2.name); alert(obj2.fun());    

九、JS 中的事件

什么是事件?事件是电脑输入设备与页面进行交互的响应。我们称之为事件。 常用的事件: onload 加载完成事件:                 页面加载完成之后,常用于做页面 js 代码初始化操作 onclick 单击事件:                        常用于按钮的点击响应操作。 onblur 失去焦点事件:                  常用用于输入框失去焦点后验证其输入内容是否合法。 onchange 内容发生改变事件:     常用于下拉列表和输入框内容发生改变后操作 onsubmit 表单提交事件:              常用于表单提交前,验证所有表单项是否合法。 事件的注册又分为静态注册和动态注册两种: 什么是事件的注册(绑定)? 其实就是告诉浏览器,当事件响应后要执行哪些操作代码,叫事件注册或事件绑定。 静态注册事件 :通过 html 标签的事件属性直接赋于事件响应后的代码,这种方式我们叫静态注册。 动态注册事件 :是指先通过 js 代码得到标签的 dom 对象,然后再通过 dom 对象 . 事件名 = function(){} 这种形式赋于事件响应后的代码,叫动态注册。 动态注册基本步骤: 1 、获取标签对象 2 、标签对象 . 事件名 = fucntion(){} onload 加载完成事件

        Title     // onload事件的方法 function onloadFun() {     alert('静态注册onload事件, 所有代码') } // onload事件动态注册, 是固定写法 window.onload = function () {     alert("动态注册onload事件") }    <!--    静态注册onload事件 onload事件是浏览器解析完页面之后就会自动触发的事件 -->

onclick 单击事件

        Title     function onclickFun() {     alert("静态注册onclick事件"); } // 动态注册onclick事件 window.onload = function () {     // 1. 获取标签对象     /*     document 是 JavaScript 语言提供的一个对象(文档)     get  获取     Element     元素(就是标签)     By   通过……   由……   经……     Id   id属性     getElementById  通过id属性获取标签对象      */     var btnObj = document.getElementById("btn01");     alert(btnObj);  // [object HTMLButtonElement]     // 2. 通过标签对象.事件名 = function(){}     btnObj.onclick = function () {  alert("动态注册的onclick事件");     } }                

onblur 失去焦点事件

        Title     // 静态注册失去焦点 function onblurFun() {     // console是控制台对象, 是由JavaScript语言提供的, 专门用来向浏览器的控制台打印输出, 用来测试使用     // log()是打印的方法     console.log("静态注册失去焦点事件"); } // 动态注册 onblur事件 window.onload = function () {     // 1. 获取标签对象     var passwordObj = document.getElementById("password");     // alert(passwordObj);     // 2. 通过标签对象.事件名 = function(){}     passwordObj.onblur = function () {  console.log("动态注册失去焦点事件")     } }        用户名: 
密码:

onchange 内容发生改变事件

        Title     function onchangeFun() {     alert("选项已经改变了"); } window.onload = function () {     var selObj = document.getElementById("sel01");     selObj.onchange = function () {  alert("选项已经改变了");     } }        请选择:         C++ Java JavaScript        请选择:     C++ Java JavaScript    

onsubmit 表单提交事件

        Title     // 静态注册表单提交事务 function onsubmitFun() {     // 要验证所有表单项是否合法, 如果有一个不合法就阻止表单提交     alert("静态注册表单提交事件---发现不合法");     return false; } window.onload = function () {     var formObj = document.getElementById("form01");     formObj.onsubmit = function () {  alert("静态注册表单提交事件---发现不合法");  return false;     } }                          

十、DOM 模型

10.1、Document 对象

DOM 全称是 Document Object Model 文档对象模型 大白话,就是把文档中的标签,属性,文本,转换成为对象来管理。 那么 它们是如何实现把标签,属性,文本转换成为对象来管理呢。这就是我们马上要学习的重点。Document 对象的理解: 第一点: Document 它管理了所有的 HTML 文档内容。 第二点: document 它是一种树结构的文档。有层级关系。 第三点:它让我们把所有的标签都对象化 第四点:我们可以通过 document 访问所有的标签对象。 什么是对象化?? 我们基础班已经学过面向对象。请问什么是对象化?  举例: 有一个人有年龄:18 岁,性别:女,名字:张某某 我们要把这个人的信息对象化怎么办! Class Person {private int age;         private String sex;         private String name; }  那么 html 标签 要 对象化 怎么办?         <div id="div01">div01

模拟对象化,相当于: 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 是要创建的标签名 注: document 对象的三个查询方法,如果有 id 属性,优先使用 getElementById 方法来进行查询 如果没有 id 属性,则优先使用 getElementsByName 方法来进行查询 如果 id 属性和 name 属性都没有最后再按标签名查 getElementsByTagName 以上三个方法,一定要在页面加载完成之后执行,才能查询到标签对象。 getElementById 方法示例代码:

        Title     /**  * 需求:当用户点击了校验按钮,要获取输出框中的内容。然后验证其是否合法。  * 验证的规则是:必须由字母,数字。下划线组成。并且长度是 5 到 12 位。  * */ function onclickFun() {     // 1. 当我们要操作一个标签的时候,一定要先获取这个标签对象     var usernameObj = document.getElementById("username");     // alert(usernameObj); // [object HTMLInputElement] 它就是 dom 对象     // alert(usernameObj.id);     // alert(usernameObj.type);     // alert(usernameObj.value);     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 = "【JavaWeb】JavaScript";     } else {  // alert("用户名不合法!");  usernameSpanObj.innerHTML = "【JavaWeb】JavaScript"     } }        用户名:             

getElementsByName 方法示例代码:

        Title     // 全选 function checkAll() {     // 让所有的复选框都选中     // document.getElementsByName();是根据 指定的 name 属性查询返回多个标签对象集合     // 这个集合的操作跟数组 一样     // 集合中每个元素都是 dom 对象     // 这个集合中的元素顺序是他们在 html 页面中从上到下的顺序     var hobbies = document.getElementsByName("hobby");     // alert(hobbies);     // [object NodeList]     // alert(hobbies[1]);  // [object HTMLInputElement]     // alert(hobbies[1].value);    // Java     // checked 表示复选框的选中状态。如果选中是 true,不选中是 false     // checked 这个属性可读,可写     for (var i = 0; i < hobbies.length; i++) {  hobbies[i].checked = true;     } } function checkNo() {     var hobbies = document.getElementsByName("hobby");     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;     } }        兴趣爱好:    C++    Java    JavaScript    

getElementsByTagName 方法示例代码:

        Title     function checkAll() {     // document.getElementsByTagName("input");     // 是按照指定标签名来进行查询并返回集合     // 这个集合的操作跟数组 一样     // 集合中都是 dom 对象     // 集合中元素顺序 是他们在 html 页面中从上到下的顺序。     var inputs = document.getElementsByTagName("input");     // alert(inputs);  // [object HTMLCollection]     for (var i = 0; i < inputs.length; i++){ inputs[i].checked = true; } }        兴趣爱好:    C++    Java    JavaScript    

createElement 方法示例代码:

        Title     window.onload = function () {     // 现在需要我们使用js代码创建html标签,并显示在页面上     // 标签的内容就是 
宁可累死自己, 也要卷死别人
var divObj = document.createElement("div"); // 在内存中
divObj.innerHTML = "宁可累死自己, 也要卷死别人"; // 但还只是在内存中 // 添加子元素 document.body.appendChild(divObj); }

10.3、节点的常用属性和方法

节点就是标签对象 方法: 通过具体的元素节点调用 getElementsByTagName() 方法,获取当前节点的指定标签名孩子节点 appendChild( oChildNode ) 方法,可以添加一个子节点,oChildNode 是要添加的孩子节点 属性: childNodes          属性,获取当前节点的所有子节点 firstChild              属性,获取当前节点的第一个子节点 lastChild              属性,获取当前节点的最后一个子节点 parentNode         属性,获取当前节点的父节点 nextSibling          属性,获取当前节点的下一个节点 previousSibling   属性,获取当前节点的上一个节点 className          用于获取或设置标签的 class 属性值 innerHTML          属性,表示获取/设置起始标签和结束标签中的内容 innerText             属性,表示获取/设置起始标签和结束标签中的文本 DOM 查询练习

dom查询window.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.查找name=gender的所有节点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(){var lis = document.getElementById("city").childNodes;alert(lis.length);};//6.返回#phone的第一个子节点var btn06Ele = document.getElementById("btn06");btn06Ele.onclick = function(){alert(document.getElementById("phone").firstChild.innerHTML);};//7.返回#bj的父节点var btn07Ele = document.getElementById("btn07");btn07Ele.onclick = function(){var bjObj = document.getElementById("bj");alert(bjObj.parentNode.innerHTML);};//8.返回#android的前一个兄弟节点var btn08Ele = document.getElementById("btn08");btn08Ele.onclick = function(){alert(document.getElementById("android").previousElementSibling.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("bj").innerHTML);alert(document.getElementById("bj").innerText);};};

你喜欢哪个城市?

  • 北京
  • 上海
  • 东京
  • 首尔


你喜欢哪款单机游戏?

  • 红警
  • 实况
  • 极品飞车
  • 魔兽


你手机的操作系统是?

  • IOS
  • Android
  • Windows Phone
gender:MaleFemale

name:

DOM查询练习中的CSS:

@CHARSET "UTF-8";body {width: 800px;margin-left: auto;margin-right: auto;}button {width: 300px;margin-bottom: 10px;}#btnList {float:left;}#total{width: 450px;float:left;}ul{list-style-type: none;margin: 0px;padding: 0px;}.inner li{border-style: solid;border-width: 1px;padding: 5px;margin: 5px;background-color: #99ff99;float:left;}.inner{width:400px;border-style: solid;border-width: 1px;margin-bottom: 10px;padding: 10px;float: left;}