JavaScript学习笔记

一、简介

JavaScript 是 Web 的编程语言。
所有现代的 HTML 页面都使用 JavaScript。JavaScript 是互联网上最流行的脚本语言,这门语言可用于 HTML 和 web,更可广泛用于服务器、PC、笔记本电脑、平板电脑和智能手机等设备。

我的第一个JavaScript程序:

<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>菜鸟教程(runoob.com)</title>
<script>
function displayDate(){
    document.getElementById("demo").innerHTML=Date();
}
</script>
</head>
<body>

<h1>我的第一个 JavaScript 程序</h1>
<p id="demo">这是一个段落</p>

<button type="button" onclick="displayDate()">显示日期</button>

</body>
</html>

1.为什么学习 JavaScript?

JavaScript web 开发人员必须学习的 3 门语言中的一门:

  • HTML 定义了网页的内容
  • CSS 描述了网页的布局
  • JavaScript 网页的行为
    JavaScript 是脚本语言

2.JavaScript 是一种轻量级的编程语言。

JavaScript 是可插入 HTML 页面的编程代码。
JavaScript 插入 HTML 页面后,可由所有的现代浏览器执行。
JavaScript 很容易学习。


一、JS的概念和声明

问题

在网页的发展历程中,发现网页不能对用户的数据进行自动校验和提供一些特效,造成用户体验极差。

解决

使用JavaScript

作用

可以让网页和用户之间进行直接简单的交互

可以给网页制作特效和画面

注意

js是由浏览器解析执行的

js需要在HTML文档中进行声明

使用

声明js代码域

  1. 在head标签中使用script声明js代码

    <head>
        <script type="text/javascript">
            function test(){
                alert("hello js!");
            }
        </script>    
    </head>
    
  2. 在head标签中使用script引入外部声明的js文件

    <script src="js/my.js" type="text/javascript" charset="utf-8">
    </script>
    

二、JS的变量学习

作用:变量是用来存储数据的,方便程序进行操作

1.js的变量声明

使用var关键字进行变量声明,格式如下

var 变量名=初始值;

2.js变量的特点

  1. 变量声明只有var关键字,声明的变量可以存储任意类型的数据
  2. js中可以不使用分号结尾,但是为了提升代码的可读性,建议使用
  3. 允许出现同名变量,但是后面的会覆盖前面
  4. 声明不赋值,默认是undefined

3.js的数据类型

使用关键字typeof判断数据类型

number:数值类型

string:字符类型

boolean:布尔类型

object:对象类型

4.js的变量强转

使用Number()方法,将其他数据类型转换为数值类型,转换失败返回NaN(not a number,是number类型)

使用Boolean()方法,将其他数据类型转换为布尔类型,有值为true,无值为false

5.特殊的值

null(object类型)

undefined(undefined类型)

NaN(number类型)

三、JS的运算符

算数运算符

​ 加法:+,在有一方为字符串时,结果为字符串

​ 减法:-

​ 乘法:*

​ 除法:/

​ 取余:%

除了+在遇到字符串时会默认字符串拼接,其余符号遇到非数字会进行隐式类型转换为数字再运算

逻辑运算符

1 与或非

&&

||

按位与

按位或

2 关系运算符

++

--

+=

-=

!=

>=

<=

等等

1.==

<script type="text/javascript">
    var a=1;
    var a1="1";
    var a2=true;
    var a3="true";
    var a4="a";
    var a5="a";
    alert(a==a1);//true
    alert(a==a2);//true
    alert(a==a3);//false
    alert(a1==a2);//true
    alert(a1==a3);//false
    alert(a2==a3);//false
    alert(a4==a5);//true
<script>

等值运算符:==

​ 先判断类型,类型一致则直接比较。

​ 类型不一致,则先使用Number()进行强转后进行比较

注意:alert(none==undefined)返回true

2.===

等同运算符:===

​ 先判断类型,类型一致则再比较内容,内容也一致则返回true

​ 类型不一致则直接返回false

注意:alert(none===undefined)返回false

四、JS的逻辑结构

if

单分支

双分支

多分支

switch

switch (){
                case value:
                    ....
                    break;
                default:
                    break;
            }

循环结构

for(var i;i>100;i--){
    
}

while(){
      
      }

do{
    
}while()

五、JS的数组

1.数组的声明

var arr=new Array();
arr[0]="abc";
alert(arr);//abc
var arr2=new Array(5);
alert(arr2.length);//5,长度为5
var arr3=[1,2,3,4,5];
alert(arr3);//1,2,3,4,5
var arr4=new Array([5,6]);
alert(arr4.length);//1,arr4的第一个元素为一个数组

js中的数组声明不用指定长度,js的数组长度是不固定的

2.数组的赋值和取值

var arr=[];
arr[0]="2";
arr[1]="abc";
arr[2]="true";
arr[3]=new Data();
arr[10]="哈哈";
alert(arr);//js内的数组可以存储任意类型数值,而且可以跳着赋值。
//如果下标所在数组值不存在,返回undefined

3.数组的length属性

var arr=[];
alert(arr.length);//0
arr[10]="abc";
alert(arr.length);//11
arr.length=100;
alert(arr.length);//100
  1. 作用1:数组名.length 返回当前数组的长度
  2. 作用2:数组名.length=值,动态改变数组的长度
    1. 当length小于当前数组长度,后面数据会丢失
    2. 当length大于原有长度,则使用空进行填充

4.数组的遍历

使用for循环

for(var i=0;i<arr.length;i++){
    alert(arr[i]);
}

for in

for(var i in arr){
    alert(arr[i]);
}

5.一个网页计算器例子

<!DOCTYPE html>
<html>
    <head>
        <meta charset="utf-8">
        <title>计算器</title>
        <style type="text/css">
            #showdiv{
                border: solid 1px;
        
                width: 320px;
            
                padding-bottom: 20px;
                text-align: center;
                margin: auto;//设置居中
                margin-top: 50px;
                border-radius: 10px;//设置边框角度
                background-color: floralwhite;
            }
            input[type=text]{
                margin-top: 20px;
                width: 290px;
                height: 40px;
                font-size: 20px;
                text-align: right;
                padding-right: 10px;
            }
            input[type=button]{
                width: 60px;
                height: 60px;
                margin-top: 20px;
                margin-left: 5px;
                margin-right: 5px;
                font-size: 30px;
                font-weight: bold;
                font-family: serif;
                
            }
            input[type=button]:hover{
                background-color: aliceblue;
            }
        </style>
        <script type="text/javascript">
            function test(btn){
                //获取button按钮对象的value
                var num=btn.value;
                //根据点击动作执行对应的业务逻辑
                switch (num){
                    case "=":
                        
                        document.getElementById("t1").value=eval(document.getElementById("t1").value);
                        
                        break;
                    case "c":
                        document.getElementById("t1").value="";
                        break;
                    default:
                        //将按钮的值赋值给input输入框
                        document.getElementById("t1").value+=num;
                        break;
                }
            }
        </script>
    </head>
    <body>
        <h3 align="center">计算器</h3>
        <hr >
        <div id="showdiv">
            <input type="text" name="" id="t1" value="" readonly="readonly"/><br>
            
            <input type="button" name="" id="" value="1" onclick="test(this)"/>
            <input type="button" name="" id="" value="2" onclick="test(this)"/>
            <input type="button" name="" id="" value="3" onclick="test(this)"/>
            <input type="button" name="" id="" value="4" onclick="test(this)"/><br>
            <input type="button" name="" id="" value="5" onclick="test(this)"/>
            <input type="button" name="" id="" value="6" onclick="test(this)"/>
            <input type="button" name="" id="" value="7" onclick="test(this)"/>
            <input type="button" name="" id="" value="8" onclick="test(this)"/><br>
            <input type="button" name="" id="" value="9" onclick="test(this)"/>
            <input type="button" name="" id="" value="0" onclick="test(this)"/>
            <input type="button" name="" id="" value="+" onclick="test(this)"/>
            <input type="button" name="" id="" value="-" onclick="test(this)"/><br>
            <input type="button" name="" id="" value="*" onclick="test(this)"/>
            <input type="button" name="" id="" value="/" onclick="test(this)"/>
            <input type="button" name="" id="" value="c" onclick="test(this)"/>
            <input type="button" name="" id="" value="=" onclick="test(this)"/>
        </div>
    </body>
</html>

6.数组的常用操作

1).数组合并---concat

<script typr="text/javascript">
    var arr=[1,"abc","zhangsan","12"];
    var b=["hello","今天天气不错"];
    var c="js";
    var d=arr.concat(b,c);
    //d=[1,"abc","zhangsan","12","hello","今天天气不错","js"],d.length=7
</script>

2).数组转字符串---join

image-20200127182120202.png
image-20200128161530066.png

3)pop()、shift()

将数组视为栈,弹栈操作,移除数组最后一个元素并返回该元素

shift()与之相反,将数组视为队列,进行出队操作

var arr=[1,"abc","zhangsan","12"];
var ele=arr.pop();//ele="12"

4) push()、unshift()

将数组视为栈,压栈操作,在数组最后追加一个元素或者多个元素并返还数组长度

unshift()与之相反,将数组视为队列,进行入队操作

注意:如果追加的是一个数组,新数组整体作为旧数组的一个元素。

从中可知JavaScript的数组是链式结构。

5)reverse()

将数组颠倒,同时返回该数组

var fruits = ["Banana", "Orange", "Apple", "Mango"];
fruits.reverse();
//fruits 结果输出:

//Mango,Apple,Orange,Banana

6)sort()排序方法

array.sort(sortfunction)
参数 描述
sortfunction 可选。规定排序顺序。必须是函数。
Type 描述
Array 对数组的引用。请注意,数组在原数组上进行排序,不生成副本。

注意:当数字是按字母顺序排列时"40"将排在"5"前面。使用数字排序,你必须通过一个函数作为参数来调用。

7)splice,从中间删除或插入

语法

array.splice(index,howmany,item1,.....,itemX)

参数 Values

参数 描述
index 必需。规定从何处添加/删除元素。 该参数是开始插入和(或)删除的数组元素的下标,必须是数字。
howmany 可选。规定应该删除多少元素。必须是数字,但可以是 "0"。 如果未规定此参数,则删除从 index 开始到原数组结尾的所有元素。
item1, ..., itemX 可选。要添加到数组的新元素

返回值

Type 描述
Array 如果从 arrayObject 中删除了元素,则返回的是含有被删除的元素的数组。

注意,可以删除0个,返回空数组

8)toString、valueOf

image.png

valueOf()定义和用法

valueOf() 方法返回 Array 对象的原始值。

该原始值由 Array 对象派生的所有对象继承。

valueOf() 方法通常由 JavaScript 在后台自动调用,并不显式地出现在代码中。

注意: valueOf() 方法不会改变原数组。

六、JS的函数

js的函数学习一:

作用:功能代码块的封装,减少代码冗余

1 函数的声明:

方式一

function函数名(形参名1,形参名2,...){执行体}

方式二

var 函数名=new Function(“形参1”,“形参2”,...,“函数体”);

该种方式中,将函数作为一个类,new了一个函数对象,如使用类型强转为字符串,可以发现该字符串与方式一相同。

只不过该种方式声明的函数名调用函数时,调用的是对象内的anonymous函数

var test2=new Function("a1","a2","alert('I'm function2')");
test2(1,2);

方式三

var test3=function(a1,a2){
    alert("I'm functon3");
}

2 函数的参数

function testParam(a1,a2){
    alert("I'm learning Param")
}
testParam();//正确,有初值undefined

js中的函数在调用时,形参可以不赋值,也可以少赋值(实参依次赋值)或者多赋值
因此js中没有函数重载

3 函数的返回值

默认返回值是undefined

注意:js的代码声明趋于和执行区域是一起的,都是在js代码域中

函数学习二

1 函数的执行符

var test1=function(){
    alert("函数的执行符学习");
    return "js";
}
alert(test1);//不执行test1,打印test1的内容
alert(test1());//执行test1,打印test1返回值的内容

在js中函数的执行符就是小括号

没有小括号时函数名就是一个变量

2 函数作为实参传递

image.png

image.png

在js中函数是可以作为实参进行传递的。

上图中a加上()则显示返回值undefined

3 开发中常用的传递方式⭐

function testObj2(fn){
    //testObj2函数在被调用的时候,实参必须是一个函数对象
    fn();
}
testObj2(function(){
    alert("开发");
})

优点:函数对象的动态执行,不用预先声明好,调用时传入即可

七、JS的自定义类

1、类的声明

function Person(name,age){
    this.name=name;
    this.age=age;
    this.fav="sing";
    this.test=function(a){
        alert(a);
    }
}

2、类的使用

var p1=new Person("zhangsan",32);
alert(p1.name,p1.age);
p1.test("hello");//等于alert(“hello”)
p1.adress="beijing";//正确用法

3、类的“继承”

var p2=new Person("lisi",23);
alert(p1.test===p2.test);//false
function Person(name,age){
    this.name=name;
    this.age=age;
    this.fav="sing";
    
}
........
........
Person.prototype.test=function(a){alert(a);}//共有
alert(p1.test===p2.test);//false

prototype关键字

通过该关键字实现了不同对象之间的数据共享

作用

  1. 实现某个类的所有子对象的方法区对象的共享,节省内存

  2. 伪继承(可以链式继承-----)

    function User(uname,pwd){
        this.uname=uname;
        this.pwd=pwd;
    }
     Person.prototype.user=new User();
     User.prototype.testU=function(){alert("我是user")};
     p1.user.testU();//可以通过p1对象调用testU方法了
    
    Person.prototype=new User();
    p1.prototype.testU();
    

4、自定义对象

1)创建自定义对象

对象的作用:用来存储整体数据

原因:很多时候我们没有办法预先知道一个对象应该有哪些属性,所以只能临时创建一个对象来自定义属性存储数据,来保证数据的完整性。

应用:

Ajax会使用

使用:

​ 1、创建自定义对象

​ var 对象名=newObject();

​ 对象名.属性名1=属性值1;

​ ...

​ ...


​ var 对象名={};

​ 对象名.属性名1=属性值1;

​ ...

​ ...

​ 2、一般用来存储数据,不会再自定义对象中存储函数对象

​ 3、js中的对象属性和内容是可以自定义扩充的,不是依赖于类的声明的,类知识对象公共部分的一种声明,是为了节省代码的冗余的。

var obj=new Object();
obj.name="zhangsan";
obj.age=23;
obj.test=function(){
    alert("我是obj");
}

5、js的常用方法和对象

作用:js将常用的功能已经封装好,调用即可,不用重复封装。

String

操作字符

function testString(){
    var str="abcdefg";
    //1.大小写转换  
   alert(str.toUpperCase()+":"+str.toLowerCase());
    //2.字符串截取
    alert(str.substr(0,1));
    //substr:返回一个从指定位置开始的指定长度的字符串,参数为start,length:从start开始要截取的长度
    //substring:返回位于string对象中指定位置的字符串,参数为start,end:字符串的结束位置
    //3.查找字符位置
    indexOf  返回指定字符第一次出现的位置
    lastIndexOf  返回指定字符最后一次出现的位置
}

Date

需要先 var 变量名=new Date();

//Date对象
function testDate(){
    //创建日期对象
    var d=new Date();
    alert(d);//隐式调用toString方法,显示当前时间
    //操作日期和时间
        //1 获取年份
        alert(d.getYear());//返回1900年距今的年数
        alert(d.getFullYear());//返回当前的年份
        //获取月份
        alert(d.getMonth()+1);//获取当前的月份数(从0算起),注意+1
        //获取日期
        alert(d.getDate());//返回当前的日期
        //获取星期几的数字
        alert(d.getDay());//返回星期数。星期天是0
        //获取小时数
        alert(d.getHours());//返回小时数
        //获取分钟数
        alert(d.getMinutes());//返回当前的分钟数
        //获取秒数
        alert(d.getSeconds());//返回当前的秒数
}

js获取的时间是客户端的时间,不能作为功能校验标准

Math

使用:Math.函数名

function testMath(){
    //随机数字
    alert(Math.random());//数值在0-1之间
    //四舍五入
    round()
    //上下取整
    ceil()
    floor()
    //
    //
    //
}

Global

global对象是一个固有对象,目的是把所有全员方法集中在一个对象中

global对象没有语法,直接调用其方法

//eval方法,直接把参数作为方法执行
eval("var a=123;");//等于声明了一个变量a
//isNaN方法。返回一个布尔值,指明提供的值是否值得保留至NaN(不是数字),如果参数用Number强转后是NaN,返回true
//parseInt,返回字符串转换后得到的整数
parseInt("abc");//返回NaN
parseInt("12abc");//返回12
//parseFloat同理

八、Js的事件机制学习:

作用:根据用户在网页中的不同操作触发执行对应的功能函数

概念:基于监听的,一个动作会触发其他事物的执行

使用:

单双击事件:

单击事件

<input type="button" name="" id="" value="测试" onclick="函数名();" />

注:

​ js中添加事件的第一种方式

​ 在HTML上直接使用事件属性进行添加,属性值为所监听执行的函数

​ js中的事件只有在当前HTML元素上有效

​ 一个HTML元素可以添加多个不同的事件

​ 一个事件可以监听触发多个函数的执行,不同函数之间用分号隔开

双击事件

ondblclick

鼠标事件

onmouseover() 鼠标悬停事件

onmousemove() 鼠标移动

onmouseout() 鼠标移出

键盘事件

onkeyup 键盘弹起事件

onkeydown 键盘下压事件

焦点事件

onfocus 获取焦点事件

onblur 失去焦点事件

页面加载事件

onload 页面加载事件

值改变事件

onchange

事件机制学习2

1.给合适的HTML标签添加合适的事件

onchange-----给select下拉框

onload-----给body

单双击-----用户会进行点击动作的HTML元素

鼠标事件----用户会进行鼠标移动操作的

键盘事件-----用户会进行键盘操作的HTML元素

2.给HTML元素添加多个事件时,注意事件之间的冲突

例如单双击事件会冲突

当事件的触发条件包含相同部分的时候会产生事件之间的冲突

3.事件的阻断 ⭐

function testA(){
    return false;//此时不再跳转
}
---
<a href="http://www.baidu.com" target="_blank" onclick="return testA();">wwwwww</a>

当事件所监听的函数将返回值返回给事件时

​ false将阻断当前事件所在的HTML标签的功能

​ true将继续执行当前事件所在的HTML标签的功能

4.超链接调用js函数

function testHref(){
    alert("onactive");
}
----
<a href="javascript:testHref()">aaaaa</a>

九、window对象

bom浏览器对象模型

​ 浏览器的内核语言支持规范

是规范浏览器对js语言的支持(js调用浏览器本身的功能)

BOM的具体实现是window对象

window对象学习

window对象不用new,直接使用即可,累死Math的使用方法,window关键字可以省略不写

1.window对象的常用方法

1).框体方法

<script type="text/javascript">
    function testAlert(){
        window.alert("警告框体");//无返回值
    }
    function testConfirm(){
        window.confirm("确认框");//提示用户选择一项操作(确认--true/取消---false)  
    }
    function testPrompt(){
        var a=window.prompt("提示框");//收集用户信息,返回值为填入的值,未输入为null,默认是空字符串
        
    }
</script>
<input type="button" name="" id="" value="测试警告框" onclick="testAlert()"/>
<input type="button" name="" id="" value="测试确认框" onclick="testConfirm()"/>
<input type="button" name="" id="" value="测试提示框" onclick="testPrompt()"/>
------

2).定时和间隔执行方法

<script type="text/javascript">
    function testSetTimeout(){//触发后指定时间后执行指定函数
        window.setTimeout(function(){//返回值为线程id
            alert("我是定时执行");
        },3000);
    }
</script>
<input type="button" name="" id="" value="测试定时执行" onclick="testSetTimeout()"/>

setInterval


image.png

clearTimeout 停止当前的定时方法,参数为定时器id

clearInterval 停止当前的间隔方法,参数为间隔器id

3).子窗口方法

<script type="text/javascript">
    function testOpen(){
    //window.open();//出现新的标签页
    window.open('son.html',.......);//配置信息直接复制下图的
}
</script>
<input type="button" name="" id="" value="测试定时执行" onclick="testOpen()"/>
image.png

分别是子页面相对路径、打开方式、高、宽、距上距离、距左距离、工具栏、菜单栏、滚动条、大小是否可变、地址栏、状态栏


<--!以下是son.html-->
<!DOCTYPE html>
<html>
    <head>
        <meta charset="utf-8" />
        <title>son页面</title>
        <script type="text/javascript">
            function testTime(){
                window.setInterval(function(){
                    var span=document.getElementById("timeSpan");
                    span.innerHTML=span.innerHtML-1;
                    if(span.innerHTML==0){
                        window.close();//只能关闭window.open打开的页面                     
                    }
                    
                    
                },1000);
            }
        </script>
        
        
    </head>
    <body onload="testTime">
        <h3>son页面</h3>
        <hr />
        <b>本页面<span id="timeSpan" style="color:red;font-size:40px;">5</span>秒后关闭</b>
    </body>
</html>


2.子页面调用父页面的函数

子页面中使用window.opener.函数名();即可调用父页面函数

作用:可以从子页面返回信息给父页面,并且刷新父页面

3.window对象的常用属性

地址栏属性location

window.location.href="http://www.baidu.com";跳转到指定网址

window.location.reload();重新刷新

历史记录属性

window.history.forward();//前进
window.history.back();//页面资源后退
window.history.go(index);//跳转到指定的历史记录资源,//index=0相当于刷新当前页面

屏幕属性

var x=window.screen.width;

var y=window.screen.height;

浏览器配置属性

var a=window.navigator.userAgent;

获取浏览器信息

十、主体面板属性(document)

document对象学习

1.document对象的概念

浏览器对外提供的支持js的用来操作HTML文档的一个对象,此对象封存的HTML文档的所有信息

2.使用document对象

1)获取HTML元素对象对象

①直接获取方式

id getElementById 返回值是该元素对象

name getElementsByName 返回值是一个名叫NodeList的对象数组

通过标签名 getElementsByTagName 返回值是一个名叫HTMLCollection的对象数组

class getElementsByClass 返回值是一个名叫HTMLCollection的对象数组

返回值都是元素对象

②间接获取方式

父子关系

​ 标签内有标签

var showdiv=document.getElementById("showdiv");
var children=showdiv.childNodes;//返回值为NodeList数组

子父关系

var inp=document.getElementById("inp");
var div=inp.parentNode;

兄弟关系

var ino=document.getElementById("inp");
var preEle=inp.previousSibling;//前一个
var nextEle=inp.nextSibling;//后一个

2)操作HTML元素对象的属性

先获取元素对象

再操作元素属性

var inp=document.getElementById("uname");
alert(inp.type+":"+inp.name);//id,value等属性

//修改元素属性
inp.value="aaa";
inp.type=button;//type属性为空或一个错误的值时,浏览器默认解析为text

可以操作元素的自定义属性

需要使用set、get方法

例如 abc属性


image.png

该方式获取不到


image.png

该用

alert(inp.getAttribute("abc"));
inp.setAttribute("abc","新的值");

当使用set、get方法来获取固有属性时,设置可以成功,但是get只能拿到document内的属性的初试值,拿不到实时数据

3)操作HTML元素对象的内容和样式

innerHTML获取元素对象内所有内容,包括HTML标签

innerText获取元素对象内所有文本内容,不包括标签


修改

var div=document.getElementById("div01");

div.innerHTML="ssssss";

操作元素样式=操作元素属性

//添加、修改、删除样式
var shoudiv=document.getElementById("showdiv");
showdiv.style="backgroud-color:red";//这叫覆盖,只剩背景颜色属性了
showdiv.style.backgroudColor="red";
showdiv.style.border="solid 2px red";
showdiv.style.border="";//置空等于删除元素标签的属性,但不会删除css内的属性

//修改类选择器
//class关键字在document类中叫className
var div01=document.getElementById("div01");
alert(div01.className);//为元素标签的属性值
div01.className="";

4)操作HTML的文档结构

增加节点

删除节点

第一种方式:使用innerHTML
function testAdd(){
    var showdiv=document.getElementById("showdiv");
    showdiv.innerHTML+="<div><input type='file' name='' id='' value=''  /><input type='button' name='' id='' value='删除' onclick='delInp(this)' /></div>
    ";
}
function delInp(btn){
    //获取父级div
    var showdiv=document.getElementById("showdiv");
    var cdiv=btn.parentNode;
    showdiv.removeChild(cdiv);
}
image.png

不太适用于有用户动作的时候

第二种方式:
function testOperation2(){
    var showdiv=document.getElementById("showdiv");
    var inp=document.createElement("input");
    inp.type="file";
    var btn=document.createElement("input");
    btn.type="button";
    btn.value="删除";
    btn.onclick=function(){
        showdiv.removeChild(inp);
        showdiv.removeChild(btn);
        showdiv.removeChild(br);
    }
    var br=document.createElement("br");
    showdiv.appendChild(inp);
    showdiv.appendChild(btn);
    showdiv.appendChild(br);
}
image.png

5)document操作Form元素

function testform(){
    var fm=document.getElementById("fm");
    alert(fm);
    var frm=document.frm;
    alert(frm);//这两个相等
    
    
}
//获取form表单元素对象
fm.elements;//只获取表单元素,其余标签不在里面


form表单的常用方法
fm.submit();//等于提交
fm.reset();

fm.action="http://www.baidu.com/s";

js表单元素的通用属性
只读   readonly
通用   disabled

操作多选框:

<!DOCTYPE html>
<html>
    <head>
        <meta charset="utf-8">
        <title></title>
            <script type="text/javascript">
                function testCheckBox(){
                    //获取所有多选元素对象数组
                    var favs=document.getElementsByName("fav");
                    
                    for(var i=0;i<favs.length;i++){
            
                        alert(favs[i].value+":"+favs[i].checked);
                    }                   
                }
                function testCheckAll(){
                    var favs=document.getElementsByName("fav");
                    for(var i=0;i<favs.length;i++){
                                
                        favs[i].checked=!favs[i].checked;
                    }   
                }
            </script>
        
    </head>
    <body>
        <h3>操作表单元素</h3>
        <hr />
        <b>操作多选框</b><br /><br />
        <input type="checkbox" name="fav" id="fav" value="1" />远走高飞<br>
        <input type="checkbox" name="fav" id="fav" value="2" />当<br />
        <input type="checkbox" name="fav" id="fav" value="3" />李白<br>
        <input type="checkbox" name="fav" id="fav" value="4" />杜甫<br>
        <input type="checkbox" name="fav" id="fav" value="5" />see you again<br />
        <input type="checkbox" name="fav" id="fav" value="6" />fade<br />
        <input type="button" name="" id="" value="播放" onclick="testCheckBox()" />
        <input type="button" name="" id="" value="全选" onclick="testCheckAll()" />
    </body>
</html>


操作下拉框

<script type="text/javascript">
                function testCheckBox(){
                    //获取所有多选元素对象数组
                    var favs=document.getElementsByName("fav");
                    
                    for(var i=0;i<favs.length;i++){
            
                        alert(favs[i].value+":"+favs[i].checked);
                    }                   
                }
                function testCheckAll(){
                    var favs=document.getElementsByName("fav");
                    for(var i=0;i<favs.length;i++){
                                
                        favs[i].checked=!favs[i].checked;
                    }   
                }
                function testSel(){
                    var sel=document.getElementById("address");
                    // alert(sel.value);
                    var os=sel.options;
                    for(var i=0;i<os.length;i++){
                        if(os[i].selected==true){
                            alert(os[i].value+":"+os[i].text);
                        }
                    }
                    
                }
                
</script>
<select name="" id="address" onchange="testSel()">
            <option value ="0">--请选择--</option>
            <option value ="1">北京</option>
            <option value ="2">上海</option>
            <option value ="3">广州</option>
</select>

6)document操作表格

rowIndex 返回行对象角标

deleteRow(要删除的行对象的角标)

insertRow

insertCell

7)document对象实现form表单校验

获取信息

创建校验规则(正则表达式

开始校验

输出校验结果

例子


image.png

onblur=“checkUname()” //失去焦点时触发函数

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 199,902评论 5 468
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 84,037评论 2 377
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 146,978评论 0 332
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 53,867评论 1 272
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 62,763评论 5 360
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,104评论 1 277
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 37,565评论 3 390
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,236评论 0 254
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 40,379评论 1 294
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,313评论 2 317
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,363评论 1 329
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,034评论 3 315
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 38,637评论 3 303
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,719评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 30,952评论 1 255
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 42,371评论 2 346
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 41,948评论 2 341

推荐阅读更多精彩内容