JavaScript知识点梳理

JavaScript简介

由网景(Netscape)公司推出
是一门面向对象的,清亮的,弱类型解释型脚本语言
弱类型:没有数据的限制。
解释型:无需编译,只要是特定的单词,浏览器就可以翻译。

JavaScript写在哪里

1. 写在某个标签当中

例如:

<button onclick="document.write('hello JS')">点击一下 </button>

2.写在Script标签当中

script 标签可以放在内容当中,标签通常写在<head></head>中或者body结束之前
自己写的话最好写在页面中

<script></script>

3.写在单独的文件当中,在通过script标签导入

JS中的输出语句

<!-- 通过浏览器自带的消息提示框输出 -->
        <button onclick="alert('hello javaScript')">点击一下</button>
<!-- 通过控制台输出日志信息 -->
        <button onclick="console.log('hello JavaScript')">再点击一下</button>
<!-- 将输出类容放到页面上 -->
        <button onclick="document.write('hello JS')">点击一下 </button>

JS中的注释

1.单行注释

//单行注释
<!--多行注释-->

/**/

JS的组成

ECMAScript 是一种标准

ECMAScript定义了JavaScript的基本语法。

ECMAScript核心语法

** 数据类型 **

原始类型

JS中的原始类型说明
数值型number整数,小数为数值型
字符串型string单双引号的都是字符串类型
布尔型booleantrue/false
空类型null通过null赋值
未定义类型undefined未声明或没有值

引用类型

对象,数组,函数等

定义类型

var name = "张三";
        var age;
        age=18;
        console.log("name:"+name+"age:"+age);

运算符

JS中的boolean可以用true/1,false/0来表示;

所以可以将true和false当作数来运算

  • 算术
+ - * / %
除了+号外 ,其余都可以做字符运算
  • 关系
> < >= <= == !=关系符号得到的结果是 true 或者 false
'==='比较的是两边的类型和内容是否相同,同为true才是true
'!=='比较值和数据类型
  • 逻辑

    && || |

  • 赋值和符合数值

    = += -= *= /= %=
    如a*=b+c相当于a=a(b+c)
    
  • 自增自减

++ --
符号在前,先+1或-1后使用 反之;
  • 条件

    表达式1?表达式2:表达式3

//java中的while(true)在这里可以写作
while(1){
//表达式
}

条件语句

if语句

  1. 单分支语句
if(判断条件){
...
}
  1. 双分支语句
if(条件语句){
...
}else{
...
}
  1. 多分支语句
if(条件语句){
...
}else if(条件语句){
...
}...
else{
...
}
  1. 嵌套语句
if(条件){
if(条件语句){
...
}
}

switch语句

switch(n)
{
    case 1:
        执行代码块 1
        break;
    case 2:
        执行代码块 2
        break;
    default:case 1case 2 不同时执行的代码
}

注意:JS里的switch里的case后的数据类型可以是不同的,java中的必须是相同类型的case语句;

循环语句

for循环

  • 循环代码块一定的次数

    for (var i=0;i<cars.length;i++)
    { 
        document.write(cars[i] + "<br>");
    }
    

for/in循环

  • 循环遍历对象的属性

    while (条件)
    {
        需要执行的代码
    }
    

while循环

  • 当指定的条件为true时循环指定的代码块

    do
    {
        需要执行的代码
    }
    while (条件);
    

do/wihle循环

  • 同while,指定true时执行指定代码块类容;

javaScript break和continue语句

break

跳出当前循环体,会执行接下来的代码

for (i=0;i<10;i++)
{
    if (i==3)
    {
        break;
    }
    x=x + "The number is " + i + "<br>";
}

continue

它会中断当前循环体,直接结束本次循环,继续下一次迭代循环

while (i < 10){
  if (i == 3){
    i++;    //加入i++不会进入死循环
    continue;
  }
  x= x + "该数字为 " + i + "<br>";
  i++;
}

JS中的数组

js中的数组类似于java中的集合数组

他是一个可变的数组且可以存放不同类型

  • 定义数组的方式

    var 数组名 = new Array();
    var 数组名 = [];
    
  • 默认没有初始化的位置,用undefined填充

  • 最大下标决定了数组长度

  • 可以保存不同类型的数据

  • 遍历数组的两种方式

    1. for循环遍历
    for(var i=0;i<arr.length;i++){
       console.log(arr[i]);
    }
    
    1. 增强for循环
    for(var index in list){
       console.log(list[index])
    }
    
  • 初始化数组

    var list =[123,"asd",true,"qwe"];
    var list = new Array(123,"asd",true,"qwe");
    

数组常用方法

以下方法在调用时都会影响数组本身

方法名作用返回值
sort()将数组升序排序排序后的数组
reverse()将数组的元素倒序保存倒叙后的数组
pop()移除最后一个元素被去除的元素
push(参数)添加一个元素到数组的末尾更新后的数组的长度
unshift()添加元素到数组头更新后的数组的长度
shift(参数)移除数组头的元素被移除的元素
fill(参数)使用指定参数填充数组填充后的数组
splice(index)从指定位置分割元素截取后的新元素
splice(index , length)指定位置长度的截取数组截取到的数组
trim() [trimLeft() , trimRight()]去除字符串前后的空格去除空格后的字符串

以下方法不会影响原数组

方法名作用返回值
indexOf(元素)得到某个元素第一次出现的索引索引
lastindexOf(元素)得到元素最后一次出现的索引索引
concat(元素)将指定元素添加到数组末尾添加后的数组
join(字符)拼接字符到数组中拼接后的数组
slice(start,end)截取start到end之间的数组截取后的数组
map(方法名)让数组执行指定方法执行方法后的新数组

JavaScript练习

1.分解质因子

<!DOCTYPE html>
<html>
    <head>
        <meta charset="utf-8" />
        <title></title>
    </head>
    <body>
        <p id="id"></p>
        <script>
            let n = Number(prompt('输入一个正整数'));
            var m = n;
            var arr = [];
            var flag = 0;
            for (var i = 2; i <= n; i++) {
                if (n % i == 0) {
                    arr.push(i)
                    n /= i;
                    i--;
                    flag++;
                }
            }
            let arrNum = arr.join('*');
            if (flag < 2) {
                console.log(m + "就是一个质数");
            } else {
                document.getElementById('id').innerHTML = m + "=" + arrNum;
            }
        </script>
    </body>

</html>

2.java版分解质因子

import java.util.Scanner;

public class Main {
    public static void main(String[] args) {
        System.out.println("输入所求正整数:");
        Scanner sc = new Scanner(System.in);
        Long n = sc.nextLong();
        long m=n;
        int flag = 0;
        String[] str = new String[50];
        for (long i = 2; i <= n; i++) {
            if (n % i == 0) {
                str[flag] = Long.toString(i);
                flag++;
                n = n / i;
                i--;
            }
        }
        if (flag < 2)
            System.out.println(m + "为质数");
        else {
            System.out.print(m + "=" + str[0]);
            for (int k = 1; k < flag; k++) {
                System.out.print("*" + str[k]);
            }
            System.out.println("\n"+m+"共有"+flag+"个质因数.");
        }
        sc.close();
    }
}

3.输入某一年的某一月,计算这个月有多少天

<!DOCTYPE html>
<html>
    <head>
        <meta charset="utf-8" />
        <title></title>
    </head>
    <body>
        <p id="id"></p>
        <script>
            var y = Number(prompt("请输入年份:"));
            var m = Number(prompt("请输入月份:"));
            var d;
            if (y % 4 == 0 || y % 100 == 0);
            switch (m) {
                case 1:
                    d = 31;
                    break;
                case 2:
                    if (y % 4 == 0 && y % 100 != 0 || y % 400 == 0) {
                        d = 28;
                    } else {
                        d = 29;
                    }
                    break
                case 3:
                    d = 31;
                    break;
                case 4:
                    d = 30;
                    break;
                case 5:
                    d = 31;
                    break;
                case 6:
                    d = 30;
                    break;
                case 7:
                    d = 31;
                    break;
                case 8:
                    d = 31;
                    break;
                case 9:
                    d = 30;
                    break;
                case 10:
                    d = 31;
                    break;
                case 11:
                    d = 30;
                    break;
                case 12:
                    d = 31;
                    break;
                default:
                    console.log("没有这一天")
            }
            document.getElementById("id").innerHTML = y + "年的" + m + "月有" + d + "天";
        </script>
    </body>
</html>

4.冒泡排序

<script>
            var flag = 0;
            var arr = new Array(12, 15, 65, 54, 33);
            for (var i = 0; i < arr.length; i++) {
                for (var j = 0; j < arr.length; j++) {
                    if (arr[j - 1] > arr[j]) {
                        flag = arr[j - 1];
                        arr[j - 1] = arr[j];
                        arr[j] = flag;
                    }
                }
            }
            for (var i = 0; i < arr.length; i++) {
                console.log(arr[i]);
            }
        </script>

JavaScript正则表达式


Regular Expression

什么是正则表达式?

正则表达式是由字符序列形成的一类搜索模式,它可以通过自定义的一些列符号来搜索你要查询的内容,它可以是一个简单的符号,也可以是一连串的复杂的模式,他常常用来搜索或者替代文本的操作。

语法


定义一个正则表达式
  • 直接量语
/正则表达式主体/修饰符(可有可无)
var patt = /runoob/i
  • 创建对象

    var reg = new RegExp("ceshi");
    

注:如果表达式返回的结果为true则说明表达式的格式正确,反之则不正确!

       //字符串校验
         <script>
            var reg = new RegExp("cheshi");
            var result = reg.test('ceshi');
             //返回的结果为false
            console.log(result);
        </script>
        //数字校验
        <script>
            var reg = /[0-9]/;
            var result = reg.test('1');
             //返回的结果为true
            console.log(result)
        </script>
正则表达式修饰符

修饰符在全局搜索中不分大小

表达式描述
i执行对大小写不敏感的匹配。
g执行全局匹配(查找所有匹配而非在找到第一个匹配后停止)。
m执行多行匹配
正则表达式模式

方括号用于查找某个范围的字符:

表达式描述
[abc]查找方括号之间的任何字符
[0-9]查找0-9之间的所有数字
(x|y)查找任何以|分割的选项(两者其一)

元字符是拥有特殊含义的字符:

元符号描述
\d查找数字
\s查找空白字符
\b匹配单词边界
\uxxxx查找以i6进制xxxx规定的Unicode字符

量词:

量词描述
n+匹配任何包含至少一个n的字符串
n*匹配任何包含零个或多个n的字符串
n?匹配任何包含零个或一个n的字符串
n{X}匹配含X个n的序列字符串
n$匹配任何结尾为n的字符串
^n匹配任何开头为 n的字符串
?=n匹配任何其后紧接指定字符串n的字符串
?!n匹配任何其后没有紧接指定字符串n的字符串

注:当^置于[ ]当中时意味着取反,如[^abc]为除了abc之外的其他字符 。

正则表达式常用方法


RegExp对象方法

方法名作用返回值
test()检索表达式是否匹配某个模式true/fase
esec()检索字符串中的 正则表达式的匹配返回匹配结果的数组
toString()转换表达式为字符串转换后的字符串

“其他详情可以查阅jsRegExp手册”

支持正则表达式的 String 对象的方法

方法描述
search检索与正则表达式相匹配的值
match找到一个或多个正则表达式的匹配
replace替换与正则表达式匹配的子串
split把字符串分割为字符串数组

RegExp对象属性


属性描述
constructor返回一个函数,该函数是一个创建RegExp对象的原型
global判断是否设置了”g"修饰符
ignoreCase判断是否设置了’‘i’修饰符
lastIndex用于判断规定下次的起始位置
multiline判断是否设置了"m"修饰符
source返回正则表达式的 匹配模式
例子1:QQ号的正则表达式
/* qq号大于5小于10位
第一位不能为零且每一位都为数字 */
var regqq=/^[1-9]{1}\d{4,9}$/;
例子2:手机号正则表达式
//简易版本

var phoneReg = /^[1]([3-9])[0-9]{9}$/;

//严谨版本

var phoneReg = /^[1](([3][0-9])|([4][5-9])|([5][0-3,5-9])|([6][5,6])|([7][0-8])|([8][0-9])|([9][1,8,9]))[0-9]{8}$/;

测试:

   var telStr = /^[1](([3][0-9])|([4][5-9])|([5][0-3,5-9])|([6][5,6])|([7][0-8])|([8][0-9])|([9][1,8,9]))[0-9]{8}$/;
    var inputStr = "18810998988";
    if (!(telStr.test(inputStr))) {
      flag = '手机号码输入不规范';
    }else{
      msg = "手机号码规范";
    }

JavaScript对象


数学运算


常数学函数(方法):
函数名作用返回值
floor向下取整返回整数部分的值
ceil向上取整小数部分大于零向上取整,为零则为整数部分
round四舍五入返回四舍五入后的值
abs取绝对值返回元素的绝对值
sqrt开平方返回开平方后的值
cbrt开立方返回开立方后的值
pow幂运算返回运算结果
random产生[0,1)的随机数产生的随机数
//计算m到n的随机数,包含[m,n];
Math.floor(Math.random()*(n-m+1+m);

函数function


一段能够实现某一特定功能的代码,可以被重复的被调用

函数的定义
//函数的参数有就写,没有 就不用写
function 函数名(参数1 ,参数2 ,,,){
    //当有返回值的时候可以使用return,没有的时候可以不写
     return 返回值;
}
函数调用
1、作为函数被调用

function 函数名(参数1 ,参数2 ,,,){
     return 返回值;
}//但函数被定义后,就可以使用函数名调用函数
var value = 函数名(参数1,参数2,,,);
//利用value来接收函数返回的参数,没有返回值就可以不用接收


2、作为方法被调用

var obj ={
   name:"bob";
   age:15;
   last:function(){
    return this.name + " " + this.age;
     }, 
};
//通过对象obj调用,函数作为方法被调用
obj.last();


3、使用构造函数调用函数


function f(a,b){
    this.a=a;
    this.b=b;
}
var T = new f("a","b"){
    console.log(T.b,T.a);
}

注:函数的调用一定是在函数被定义之后才可以被调用,没有定义的函数被调用会报错

全局函数
  • parseInt()

    • 将传入的参数转换成一个整数

    • 字符或字符串无法转为整数,但不会报错,得到的结果是(NaN)

    • 能够识别数字开头的字符串,取数字部分,后面的丢弃。

  • parseFloat()

    • 无法识别字符,同样可以截取数字开头部分

    • 将一个字符串转换成一个浮点数

  • isNaN()

    • 判断是不是一个数

    • 返回一个boolean值

  • Number()

    • 对象转数字 new Number(“123”)得到一个对象
  • eval()

    • 可执行字符中可执行的内容当作命令执行

    • 如:eval(“3+2”)得到的值是5;

匿名函数
function(){
    函数体;
}

JavaScriptBOM


Browser Object Model

浏览器对象模型

可以通过js获取浏览器信息的控制浏览器行为

弹框


  • 警告框

    //带有提示文字和确认按钮,没有返回值
    alert("提示文字")
    
  • 输入框

    //带有提示文字,输入框和确认按钮,有返回值
    prompt("提示文字")
    
  • 确认框

//有返回值,提示文字
confirm("提示文字")

例子:猜数字游戏

<script>
            alert("欢迎来到猜数字游戏");
            var r = Math.floor( Math.random()*100+1)
            while(true){
                var num  = prompt("请输入数字");
            if(num>r){
                alert("太大了!");
            }else if(num<r){
                alert("太小了!");
            }else{
                alert("恭喜你答对了!");
            }
    }
        </script>

window对象


表示浏览器窗口对象,可以获取浏览器的相关信息,调用其行为

常用属性和行为作用
window.innerWidth获取当前浏览器窗口可视区域的宽度
window.innerHeight获取当前浏览器窗口可视区域的高度
window.screen获取屏幕对象
window.localtion获取本地对象
window.history获取历史对象
window.open打开一个页面
window.close关闭一个页面(默认关闭自身)谁调用关闭谁
window.setTimeout设置延时操作(执行一次结束)
window.clearTimeout清除倒计时
window.setInterval设置时间间隔(执行无限次)
window.clearInterval清除时间间隔
//通过window.open()来打开一个窗口展示百度页面
<body>
        <button id="btn">点击一下</button>
        <script>
            var opens = document.getElementById("btn");
            opens.onclick = function() {
            window.open("http://www.baidu.com");
            }

        </script>
    </body>
//添加一个按钮,在点击时弹出输入密码框,如果密码正确,3秒后关闭页面,如果错误
//不做任何操作
<body>
        <button id="btn">点击一下</button>
        <button id="clear">取消</button>
        <script>
            var opens = document.getElementById("btn");
            var pwd;
            var time;
            opens.onclick = function() {
                pwd = prompt("请输入密码");
                if (pwd === "123456") {
                     time = window.setTimeout(function() {
                        alert("3秒后关闭当前页面");
                        window.close();
                    }, 3000);
                }
            }
            document.getElementById("clear").onclick = function(){
                window.clearTimeout(time);
            }
        </script>
</body> 
//随机点名练习
<script>
            var h1 = document.getElementById("h1");
            var s;
            var nameList = ['刘希莲', '陈宜源', '吴泰恭', '张孝南', '陈嘉华', '陈志桦', '王佩桦', '强兰义', '李志伯'];
            document.getElementById("start").onclick = function() {
                s = window.setInterval(function() {
                    var r = Math.floor(Math.random() * nameList.length);
                    h1.innerText = nameList[r];
                }, 80)
            }
            document.getElementById("end").onclick = function() {
                window.clearInterval(s);
            }
        </script>

screen对象


用于获取屏幕相关信息

属性作用
[window]screen.width获取当前屏幕设置的宽度
[window]screen.height获取当前屏幕设置的高度
[window]screen.availWidth获取当前屏幕除导航栏外设置的宽度
[window]screen.availHeight获取当前屏幕除导航栏外设置的高度

location对象


用于设置或获取地址栏相关信息

常用方法和属性作用
[window]location.href获取或设置当前页面地址(可后退)
[window]location.assign(“url”)改变当前地址(可后退)
[window]location.replace(“url”)替换当前页面地址(不可后退)
[window]location.reload()刷新当前页面

histroy对象


方法作用
[window]history.back()回退
[window]history,forward()/go()前进

JavaScriptDOM

Document Object Model

文档模型

  • 每个页面都是一个文档树(document tree)

  • 每一个标签都是一个节点node

  • 根节点就是html

  • document对象表示当前页面对象,表示当前页面对象

  • DOM用于操作(获取设置内容,样式等)

获取节点(获取HTML元素)

获取节点的方式作用
document.getElementById(“标签的id”)根据id获取页面中的节点
document.getElementByClassName("标签的class名“)根据标签的class名获取页面中的所有对应的节点,返回一个节点数组
document.getElementByTagName(“标签名”)通过标签名获取节点,得到的还是一个数组,不管有几个。
document.getElementByName(“属性name”)通过属性name获取节点

获取节点文本

  • innerText:不能识别标签

  • innerHtml:可以识别到标签

练习
//判断输入内容是否是小于6位,并且显示不同的提示效果
<body>
        <input type="text" placeholder="账号" name="name" /><span id="warning"></span><br />
        <input type="password" placeholder="密码" name="pwd" />
        <script>
            var names = document.getElementsByName("name")[0];
            names.onblur = function() {
                if (names.value.length < 6) {
                    document.getElementById("warning").innerHTML = "<span style='color:red;'>密码不能小于6位</span>";
                } else {
                    document.getElementById("warning").innerHTML = "<span style='color:green;'>√</span>";
                }
            }
        </script>
    </body>

获取节点属性


常用属性作用
节点src获取或设置资源路径,如img的src
节点value获取或设置节点的value属性,如表单的value
节点checked获取或设置单选按钮和复选按钮的选中状态
节点className获取或设置标签的class属性值
节点href获取或设置标签的跳转路径值如a标签

修改节点样式


  • 单个节点样式

    节点style.样式名=“值”;

    样式名需要使用驼峰命名法比如background-color=>backgroundColor

  • 多个节点样式

    节点style,cssText=“正常的css写法”

    值里面的 内容不可以换行

    只能获取到通过该方式设置过的css样式

练习(随机点名)

<!DOCTYPE html>
<html>
    <head>
        <meta charset="utf-8">
        <title></title>
        <style>
            table {
                width: 500px;
                box-sizing: border-box;
                border: 1px solid #000000;
                text-align: center;
                border-collapse: collapse;
            }

            td {
                width: 100px;
                box-sizing: border-box;
                border: 1px solid #000000;
            }

            .hover {
                background-color: rgba(0, 255, 255, 0.5);
            }

            div {
                width: 500px;

                text-align: center;
            }

            .start,
            .end {
                background-color: aqua;
                margin-left: 15px;
                margin-right: 15px;
                border: none;
                margin-bottom: 5px;
            }
        </style>
    </head>
    <body>
        <div>
            <table cellpadding="10px">
                <tr>
                    <td>张纬祯</td>
                    <td>罗南扬</td>
                    <td>陈建玟</td>
                    <td>侯胜学</td>
                    <td>李妙峰</td>
                </tr>
                <tr>
                    <td>穆彦君</td>
                    <td>杜威柔</td>
                    <td>林家皓</td>
                    <td>李佩康</td>
                    <td>刘怡雨</td>
                </tr>
                <tr>
                    <td>潘坚昀</td>
                    <td>沈嘉玲</td>
                    <td>杨恭乔</td>
                    <td>王茹蓁</td>
                    <td>许婉婷</td>
                </tr>
                <tr>
                    <td>张惠忠</td>
                    <td>杨冠廷</td>
                    <td>叶彦博</td>
                    <td>郑紫智</td>
                    <td>刘丽雯</td>
                </tr>
                <button class="start">开始</button>
                <button class="end">结束</button>
            </table>
        </div>
        <script>
            var tdlist = document.querySelectorAll("td");
            var btns = document.querySelector(".start");
            var btne = document.querySelector(".end");
            var table = document.querySelector("table");
            var setTime;

            btns.addEventListener('click', function() {
                    clearInterval(setTime);
                    setTime = setInterval(change, 200);
                }

            );
            btne.addEventListener('click', function() {
                clearInterval(setTime);
            });

            function change() {
                var num = Math.floor(Math.random() * 20);
                // 将所有td背景颜色初始化
                for (var i = 0; i < tdlist.length; i++) {
                    tdlist[i].className = "";
                }
                tdlist[num].className = "hover";
            }
        </script>
    </body>
</html>
[i].className = "";
                }
                tdlist[num].className = "hover";
            }
        </script>
    </body>
</html>

练习(动态添加表格)

<!DOCTYPE html>
<html>
    <head>
        <meta charset="utf-8">
        <title></title>
        <style>
            table {
                width: 500px;
                box-sizing: border-box;
                border: 1px solid #000000;
                text-align: center;
                border-collapse: collapse;
            }

            tr,
            th,
            td {
                width: 100px;
                box-sizing: border-box;
                border: 1px solid #000000;
            }
        </style>
    </head>
    <body>
        <input type="text" name="singer" placeholder="输入歌手名" />
        <input type="text" name="song" placeholder="输入歌曲" /><button id="btn">添加</button>
        <table id="mtable">
            <tr>
                <th>歌手</th>
                <th>作品</th>
                <th>操作</th>
            </tr>
        </table>
        <script>
            document.getElementById("btn").onclick = function() {
                var table = document.getElementById("mtable");
                var singer = document.getElementsByName("singer")[0].value;
                var song = document.getElementsByName("song")[0].value;
                if (singer.length == 0 || song.length == 0) {
                    alert("输入不能为空");
                    return;
                }
                var tr = document.createElement("tr");
                var td1 = document.createElement("td");
                td1.innerText = singer;
                var td2 = document.createElement("td");
                td2.innerText = song;
                var td3 = document.createElement("td");
                td3.innerHTML = "<a>删除</a>";

                td3.children[0].onclick = function() {
                    table.removeChild(tr);
                }

                tr.appendChild(td1);
                tr.appendChild(td2);
                tr.appendChild(td3);

                table.appendChild(tr);
            }
        </script>
    </body>
</html>

事件

某个节点的行为

给节点添加事件

<button onclick="事件"></button>
<script>
节点.事件=function(){
    事件内容;
}
</script>

常用事件

事件作用
onclick鼠标点击事件
ondblclick鼠标双击事件
onblur文本框失去焦点
onfocus文本聚焦事件
onmouseenter/onmouseover鼠标移入
onmouseout/onmouseleave鼠标移出
onmousemove鼠标移动
onmousewheel鼠标滚轮滚动
onmousedown/onmouseup鼠标按下松开
onsubmit表单提交
onchangeHTML改变

event对象

在莫个函数中传一个参数,通常为e或event,就可以监听对应的事件,

如在onmouse相关事件中,加入event,就能监听鼠标状态

节点.事件=function(e){}

event对象常用属性和方法作用
event.clientX获取当前鼠标水平位置
event.clientX获取当前鼠标垂直位置
event.preventDefault阻止默认事件
event.stopPropagation阻止事件冒泡

事件冒泡

文档中有重叠现象 ,并且有相同事件,在触发事件时就会有多个相同的事件被触发

JavaScript表单

表单

输入框

  • 文本框 type=“text”

  • 密码框 type=“password”

  • 文本域 textarea

获取输入框中的值

//使用普通的后去id,class,name,标签名的方式
var v = document.getElementByName("name").value;
//获取表单的forms数组
document.forms[0].onsubmit=function(){
    //这样可以阻止表单的提交事件,只需要return false;即可
}

表单提交

一定要使用表单的提交事件(onsubmit()),不能用普通的单击事件

表单元素

  • select 下拉列表元素

    <label for="os">OS</label>
            <select name="os">
                <option>os</option>
                <optgroup label="windows">
                    <option value="home">home</option>
                    <option value="pre">pre</option>
                    <option value="pro">pro</option>
                    <option value="ult">ult</option>
            </select>
    

    可以通过value属性获取选择的值

var data  = document.getElementById('元素id').value;

//select也可以设置多选,多选的时候就需要将选择遍历才能得到相应的值
var selected = [];
for (var i = 0, count = elem.options.length; i < count; i++) {
  if (elem.options[i].selected) {
    selected.push(elem.options[i].value);
  }
}
  • checkbox 多选框控件
//多选框只有两种状态,一种是选中状态,另外一种时未选中状态
<input type="checkbox" name="toggle" id="toggle" value="toggle">

checked属性得到的只是一个boolean类型的值,表示是否被选中。

  • radio 单选框控件
<input type="radio" name="gender" value="Female"> Female </input>
<script>
var radios = document.getElementsByName('gender');
var selected;
for (var i = 0; i < radios.length; i++) {
  if (radios[i].checked) {
    selected = radios[i].value;
    break;
  }
}
if (selected) {
  // 用户选中了某个选项
}
</script>

同复选框,单选框也是只有选中或者未选中状态

JavaScript轮播图

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值