Javascript 语言诞生主要是完成页面的数据验证。因此它运行在客户端,需要运行浏览器来解析执行 JavaScript 代码。
JS是 Netscape网景公司的产品,最早取名为 LiveScript;为了吸引更多 java程序员。更名为 JavaScript。
JS是弱类型,Java是强类型。
特点:
1. 交互性(它可以做的就是信息的动态交互)
2. 安全性(不允许直接访问本地硬盘)
3. 跨平台性(只要是可以解释 JS的浏览器都可以执行,和平台无关)
只需要在head标签中,或者在body标签中,使用script 标签来书写 JavaScript 代码
- html>
- <html lang="en">
- <head>
- <meta charset="UTF-8">
- <title>Titletitle>
- <script type="text/javascript">
-
- alert("hello javaScript!");
- script>
- head>
- <body>
-
- body>
- html>
使用script标签引入单独的 JavaScript 代码文件
- html>
- <html lang="en">
- <head>
- <meta charset="UTF-8">
- <title>Titletitle>
-
- <script type="text/javascript" src="1.js">script>
- head>
- <body>
-
- body>
- html>
JavaScript 的变量类型:
JavaScript 里特殊的值:
JS 中的定义变量格式:
- html>
- <html lang="en">
- <head>
- <meta charset="UTF-8">
- <title>Titletitle>
- <script type="text/javascript">
- var i;
- // alert(i); // undefined
- i = 12;
- // typeof()是 JavaScript语言提供的一个函数。
- // alert( typeof(i) ); // number
- i = "abc";
- // 它可以取变量的数据类型返回
- // alert( typeof(i) ); // String
- var a = 12;
- var b = "abc";
- alert( a * b ); // NaN是非数字,非数值。
- script>
- head>
- <body>
-
- body>
- html>
等于: == 等于是简单的做字面值的比较
全等于: === 除了做字面值的比较之外,还会比较两个变量的数据类型
- html>
- <html lang="en">
- <head>
- <meta charset="UTF-8">
- <title>Titletitle>
- <script type="text/javascript">
-
- var a = "12";
- var b = 12;
-
- alert( a == b ); // true
- alert( a === b ); // false
- script>
- head>
- <body>
-
- body>
- html>
在 JavaScript 语言中,所有的变量,都可以做为一个 boolean 类型的变量去使用。
0、null、undefined、””(空串) 都认为是false;
&& 且运算:
|| 或运算:
并且 && 与运算和 || 或运算有短路,当这个 && 或 || 运算有结果了之后,后面的表达式不再执行。
- html>
- <html lang="en">
- <head>
- <meta charset="UTF-8">
- <title>Titletitle>
- <script type="text/javascript">
- var arr1 = []; // 定义一个空数组
- alert( arr.length ); // 0
-
- arr[0] = 12;
- alert( arr[0] );//12
-
- // javaScript语言中的数组,只要我们通过数组下标赋值,那么最大的下标值,就会自动的给数组做扩容操作。
- arr[5] = "abc";
- alert(arr.length); //6
-
- alert(arr[4]);// undefined
-
- // 数组的遍历
- for (var i = 0; i < arr.length; i++){
- alert(arr[i]);
- }
- script>
- head>
方式一
使用的格式如下:
- function 函数名(形参列表){
- 函数体
- }
- html>
- <html lang="en">
- <head>
- <meta charset="UTF-8">
- <title>Titletitle>
- <script type="text/javascript">
- // 定义一个无参函数
- function fun(){
- alert("无参函数 fun()被调用了");
- }
-
- fun();
-
- function fun2(a ,b) {
- alert("有参函数 =>" + a + ",b=>"+b);
- }
-
- fun2(12,"abc");
-
- // 定义带有返回值的函数
- function sum(num1,num2) {
- var result = num1 + num2;
- return result;
- }
-
- alert( sum(100,50) );
- script>
- head>
- <body>
-
- body>
- html>
方式二
使用格式如下:
var 函数名 = function(形参列表){ 函数体 }
- html>
- <html lang="en">
- <head>
- <meta charset="UTF-8">
- <title>Titletitle>
- <script type="text/javascript">
- 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(100,200) );
- script>
- head>
- <body>
-
- body>
- html>
就是在 function 函数中不需要定义,但却可以直接用来获取所有参数的变量。我们管它叫隐形参数。
隐形参数特别像 java 基础的可变长参数一样。public void fun( Object ... args ); 可变长参数其是是一个数组。
那么 js中的隐形参数也和 java 的可变长参数一样。操作类似数组
- html>
- <html lang="en">
- <head>
- <meta charset="UTF-8">
- <title>Titletitle>
- <script type="text/javascript">
- function fun(a) {
- alert( arguments.length );//可看参数个数
- alert( arguments[0] );
- alert( arguments[1] );
- alert( arguments[2] );
- alert("a = " + a);
-
- for (var i = 0; i < arguments.length; i++){
- alert( arguments[i] );
- }
-
- alert("无参函数 fun()");
- }
-
- fun(1,"ad",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) );
- script>
- head>
- <body>
-
- body>
- html>
- DOCTYPE html>
- <html lang="en">
- <head>
- <meta charset="UTF-8">
- <title>Titletitle>
- <script type="text/javascript">
-
- var obj = new Object();
- obj.name = "华仔";
- obj.age = 18;
- obj.fun = function () {
- alert("姓名:" + this.name + " , 年龄:" + this.age);
- }
-
- alert( obj.age );
- obj.fun();
- script>
- head>
- <body>
-
- body>
- html>
- html>
- <html lang="en">
- <head>
- <meta charset="UTF-8">
- <title>Titletitle>
- <script type="text/javascript">
-
- var obj = {
- name:"国哥",
- age:18,
- fun : function () {
- alert("姓名:" + this.name + " , 年龄:" + this.age);
- }
- };
-
- alert(obj.name);
- obj.fun();
- script>
- head>
- <body>
- body>
- html>
事件是电脑输入设备与页面进行交互的响应。我们称之为事件。
常用的事件:
事件的注册(绑定)其实就是告诉浏览器,当事件响应后要执行哪些操作代码,叫事件注册或事件绑定。
事件的注册又分为静态注册和动态注册两种:
动态注册基本步骤:
- html>
- <html lang="en">
- <head>
- <meta charset="UTF-8">
- <title>Titletitle>
- <script type="text/javascript">
- // onload事件的方法
- function onloadFun() {
- alert('静态注册 onload事件,所有代码');
- }
-
- // onload事件动态注册。是固定写法
- window.onload = function () {
- alert("动态注册的 onload事件");
- }
- script>
- head>
-
- <body>
-
- body>
- html>
- html>
- <html lang="en">
- <head>
- <meta charset="UTF-8">
- <title>Titletitle>
- <script type="text/javascript">
- function onclickFun() {
- alert("静态注册 onclick事件");
- }
-
- // 动态注册 onclick事件
- window.onload = function () {
- /*
- 1、获取标签对象
- document 是 JavaScript语言提供的一个对象(文档)
- getElementById 通过id属性获取标签对象
- **/
- var btnObj = document.getElementById("btn01");
- alert( btnObj );
-
- // 2 通过标签对象.事件名 = function(){}
- btnObj.onclick = function () {
- alert("动态注册的 onclick事件");
- }
- script>
- head>
- <body>
-
- <button onclick="onclickFun();">按钮 1button>
- <button id="btn01">按钮 2button>
- body>
- html>
- html>
- <html lang="en">
- <head>
- <meta charset="UTF-8">
- <title>Titletitle>
- <script type="text/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 type="text" onblur="onblurFun();"><br/>
- 密码:<input id="password" type="text" ><br/>
- body>
- html>
- html>
- <html lang="en">
- <head>
- <meta charset="UTF-8">
- <title>Titletitle>
- <script type="text/javascript">
- function onchangeFun() {
- alert("女神已经改变了");
- }
-
- window.onload = function () {
- //1、获取标签对象
- var selObj = document.getElementById("sel01");
- //2、通过标签对象.事件名 = function(){}
- selObj.onchange = function () {
- alert("男神已经改变了");
- }
- }
- script>
- head>
- <body>
- 请选择你心中的女神:
-
- <select onchange="onchangeFun();">
- <option>--女神--option>
- <option>芳芳option>
- <option>佳佳option>
- <option>娘娘option>
- select>
- 请选择你心中的男神:
- <select id="sel01">
- <option>--男神--option>
- <option>国哥option>
- <option>华仔option>
- <option>富城option>
- select>
- body>
- html>
- html>
- <html lang="en">
- <head>
- <meta charset="UTF-8">
- <title>Titletitle>
- <script type="text/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>
-
- <form action="http://localhost:8080" method="get" onsubmit="return onsubmitFun();">
- <input type="submit" value="静态注册"/>
- form>
- <form action="http://localhost:8080" id="form01">
- <input type="submit" value="动态注册"/>
- form>
- body>
- html>
DOM 全称是 Document Object Model 文档对象模型
大白话,就是把文档中的标签,属性,文本,转换成为对象来管理。

Document 对象的理解:
那么 html 标签要对象化怎么办?
- <body>
- <div id="div01">div01div>
- body>
模拟对象化,相当于:
- class Dom{
- private String id; // id属性
- private String tagName; // 表示标签名
- private Dom parentNode; // 父亲
- private List
children; // 孩子结点 - private String innerHTML; // 起始标签和结束标签中间的内容
- }
- document.getElementById(elementId)
- 通过标签的 id 属性查找标签 dom对象,elementId是标签的 id属性值
-
- document.getElementsByName(elementName)
- 通过标签的name属性查找标签 dom对象,elementName标签的 name属性值
-
- document.getElementsByTagName(tagname)
- 通过标签名查找标签 dom对象。tagname是标签名
-
- document.createElement( tagName)
- 通过给定的标签名,创建一个标签对象。tagName 是要创建的标签名
注:
以上三个方法,一定要在页面加载完成之后执行,才能查询到标签对象。
getElementById 方法示例代码
- html>
- <html lang="en">
- <head>
- <meta charset="UTF-8">
- <title>Titletitle>
- <script type="text/javascript" >
- /*
- 当用户点击了较验按钮,要获取输出框中的内容。然后验证其是否合法。
- 验证的规则是:必须由字母,数字。下划线组成。并且长度是 5到 12位。
- **/
- function onclickFun() {
- // 1、当我们要操作一个标签的时候,一定要先获取这个标签对象。
- var usernameObj = document.getElementById("username");
-
- var usernameText = usernameObj.value;
- // 如何验证字符串符合某个规则 ,需要使用正则表达式技术
- var patt = /^\w{5,12}$/;
-
- var usernameSpanObj = document.getElementById("usernameSpan");
-
- // innerHTML 表示起始标签和结束标签中的内容,这个属性可读,可写
- usernameSpanObj.innerHTML = "国哥真可爱!";
-
- //test()方法用于测试某个字符串,是不是匹配我的规则
- if (patt.test(usernameText)) {
- usernameSpanObj.innerHTML = "用户名合法!";
- } else {
- usernameSpanObj.innerHTML = "用户名不合法!";
- }
- script>
- head>
- <body>
- 用户名:<input type="text" id="username" value="wzg"/>
- <span id="usernameSpan" style="color:red;">span>
- <button onclick="onclickFun()">较验button>
- body>
- html>
getElementsByName 方法示例代码
- html>
- <html lang="en">
- <head>
- <meta charset="UTF-8">
- <title>Titletitle>
- <script type="text/javascript">
- //让所有复选框都选中
- function checkAll() {
- /*
- 根据指定的name属性查询返回多个标签对象集合,这个集合的操作跟数组一样,
- 集合中每个元素都是dom对象,这个集合中的元素顺序是他们在html页面中从上到下的顺序
- **/
- var hobbies = document.getElementsByName("hobby");
- 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;
- }
- }
- script>
- head>
- <body>
- 兴趣爱好:
- <input type="checkbox" name="hobby" value="cpp" checked="checked">C++
- <input type="checkbox" name="hobby" value="java">Java
- <input type="checkbox" name="hobby" value="js">JavaScript
- <br/>
-
- <button onclick="checkAll()">全选button>
- <button onclick="checkNo()">全不选button>
- <button onclick="checkReverse()">反选button>
- body>
- html>
getElementsByTagName 方法示例代码
- html>
- <html lang="en">
- <head>
- <meta charset="UTF-8">
- <title>Titletitle>
- <script type="text/javascript">
- // 全选
- function checkAll() {
- /*
- 按照指定标签名来进行查询并返回集合,这个集合的操作跟数组一样,集合中都是dom对象
- 集合中元素顺序是他们在 html页面中从上到下的顺序。
- **/
- var inputs = document.getElementsByTagName("input");
- for (var i = 0; i < inputs.length; i++){
- inputs[i].checked = true;
- }
- }
- script>
- head>
- <body>
- 兴趣爱好:
- <input type="checkbox" value="cpp" checked="checked">C++
- <input type="checkbox" value="java">Java
- <input type="checkbox" value="js">JavaScript
- <br/>
-
- <button onclick="checkAll()">全选button>
- body>
- html>
createElement 方法示例代码
- html>
- <html lang="en">
- <head>
- <meta charset="UTF-8">
- <title>Titletitle>
- <script type="text/javascript">
- window.onload = function () {
- // 使用js代码来创建 html标签,并显示在页面上
-
- var divObj = document.createElement("div"); // 在内存中
-
- var textNodeObj = document.createTextNode("国哥,我爱你");
-
- divObj.appendChild(textNodeObj); // 国哥,我爱你
- // divObj.innerHTML = "国哥,我爱你"; // 国哥,我爱你,但,还只是在内存中
-
- // 添加子元素
- document.body.appendChild(divObj);
- }
- script>
- head>
- <body>
-
- body>
- html>
方法:
属性: