JavaScript

简介

JavaScript

一种轻量级的脚本语言,用来编写控制其他大型应用程序的脚本。

一种嵌入式语言。只适合嵌入更大型的应用程序环境,调用宿主底层的API。

JavaScript的核心语法部分相当精简,分为两部分。

1、基本语法构造

2、标准库。

除此之外就是调用的宿主环境提供的额外API(只能在该环境使用的接口)

例如:浏览器

浏览器控制类:操作浏览器

DOM类:操作网页的各种元素

Web类:实现互联网的各种功能

使用领域

(1)、浏览器的平台化

 

(2)、Node

(3)、数据库的操作

(4)、跨移动平台

(5)、内嵌脚本语言

(6)、桌面应用程序

语法

变量声明

//可控的使用区域
var num = 1;
//定义了就成了成员变量
num = 1;

关于JavaScript的变量以及语法和Java都是大同小异的

JavaScript的var声明后是指代的所有的类型的

JavaScript判断两个值是否相等的方法

==和===

==判断两个值是否相等

===判断两个值的类型和值是否都相等

控制语句

控制语句也和Java的相同

数值类型

数值类型与Java有些不同

NaN:非数字,主要出现在字符串未解析成数字的场合。

undefined:表示数据找不到或者没有初始化

Infinity:如1/0会显示infinity,表示无穷

对象

JavaScript同Java一样也是面对对象的,是他们的核心。

在JavaScript里对象就是一组“键值对(key-value)”,是一种无须的数据集合。

var obj = {
    foo:"hello",
    bar:"World"
};

in运算符

用于检查对象是否包含某个属性,包含就返回true,否则返回false

遍历

for (var i in obj) {
  console.log(obj[i]);
}
for( var i = 0;i<10;i++){
    console.log(i);
}

增强for不同

而普通for的遍历是与Java一样的

数组

定义

var arr = [1,2,3,4,5];
var arr1 = [];
a[0] = 6;
a[1] = 5;
a[2] = 4;
a[3] = 3;
a[4] = 2;
a[5] = 1;

用法与Java雷同

函数

1、概述

函数的3种声明方式

1、function命令

function print(s) {
  console.log(s);
}

2、函数表达式

var print = function(s) {
  console.log(s);
};
//调用
print();

3、Function构造函数

var add = new Function(
  'x',
  'y',
  'return x + y'
);

// 等同于
function add(x, y) {
  return x + y;
}

函数可以调用自身,这就是递归(recursion)。

下面就是通过递归,计算斐波那契数列

function fib(num) {
  if (num === 0) return 0;
  if (num === 1) return 1;
  return fib(num - 2) + fib(num - 1);
}

fib(6);

得到第六个元素:8

在函数里没有重载,调用时是按顺序调用。

BOM

定时器功能

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
</head>
<body>
    <button onclick="testSetTimeout()">开一个定时器</button>
    <button onclick="clearTime()">取消定时器</button>
    <button onclick="testSetInt()">循环定时器</button>
    <button onclick="clearSetInt()">取消循环定时器</button>
</body>
<script>
    //window是顶级对象,在js中可以默认不用书写
    //警告框
    // window.alert("123");
    // //确认框
    // var flag = window.confirm("确认删除吗?");
    // console.log(flag);
    // //带输入框的提示弹出框
    // var str = window.prompt("请输入一个月份");
    // console.log(str);

    var num ;
    var num2 ;
    var num3 ;

    function testSetTimeout(){
        //setTimeout
        num = setTimeout(function () {
            alert("这是在5秒后会弹出的框");
        },5000);
        num2 = setTimeout(function () {
            alert("这是在5秒后会弹出的框");
        },5000);
        num3 = setTimeout(function () {
            alert("这是在5秒后会弹出的框");
        },5000);
    }

    function clearTime() {
        console.log(num);
        clearTimeout(num);
        console.log(num2);
        clearTimeout(num2);
        console.log(num3);
        clearTimeout(num3);
    }


    function testSetInt() {
        num = setInterval(function () {
            alert("这是一个延迟3秒执行的循环定时器");
        },3000);
    }

    function clearSetInt() {
        clearInterval(num);
    }
</script>
</html>

DOM

JavaScript操作的是网页的接口,文档对象模型。

作用:

将网页转为一个JavaScript对象,从而可以用脚本进行各种操作(如:增删等)。

节点node

DOM的最小单位。文档的树形结构(DOM树)。

七种类型

Document:整个文档的顶层节点

DocmentType:doctype标签(<!DOCTYPE html>)

Element:网页的各种HTML标签<body>、<a>...

Attribute:网页元素的属性(class = "right")

Text:标签之间包含的文本

Comment:注释

DocumentFragment:文档的片段

Node.nodeType

nodeType返回一个整数值,表示节点类型

对应类型

确定节点类型时通常使用nodeType方法

Node.nodeName

返回节点名

    dom操作
        document是整个html文件的顶级节点,要获取html中的节点,必须同过document对象来获取
        查询
        id        getElementById()                通过id查询一个节点
        类        getElementsByClassName()        通过class属性查询相对应节点
                getElementsByTagName()            通过标签名查询所有节点
        选择器    querySelector                    通过选择器获取一个节点
                querySelectorAll                   通过选择器获取所有节点

        获取文本节点
            innerHTML   获取的是当前节点下的所有子节点和文本节点
            innerText   获取的是当前节点下的所有文本节点

        修改文本节点
            innerHTML   删除当前节点下的所有节点,添加上赋值的字符串为文本节点
            innerText    删除当前节点下的所有文本节点,添加上赋值的字符串为文本节点

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
    <style>
        a{
            color: black;
        }
        a[href="https://www.163.com"]{
             color: red;
        }
        #div3{
            width: 100px;
            height: 100px;
        }
        .r{
            background-color: red;
        }
        .g{
            background-color: green;
        }
        .y{
            background-color: yellow;
        }
    </style>
</head>
<body>
    <div id="div1" class="mm">
        <a href="https://www.baidu.com" title="aa"><span>*</span>百度</a>
    </div>
    <div class="mm">
        <ul>
            <li><a href="https://www.163.com"><span>*</span>网易</a></li>
            <li><a href="https://www.163.com">网易</a></li>
            <li><a href="https://www.qq.com">腾讯</a></li>
            <li><a href="https://www.qq.com">腾讯</a></li>
            <li><a href="https://www.qq.com">腾讯</a></li>
        </ul>
    </div>
    <div id="div3" class="r"></div>
    <div>
        <button onclick="getById()">通过id获取节点</button>
        <button onclick="getByClass()">通过class属性获取所有节点</button>
        <button onclick="getByTagName()">通过标签获取所有节点</button>
        <button onclick="getByQuery()">通过选择器获取一个节点</button>
        <button onclick="getByQueryAll()">通过选择器获取全部节点</button>
        <button onclick="getInner()">获取文本节点-innerHTML</button>
        <button onclick="getText()">获取文本节点-innerText</button>
        <button onclick="changeInner()">修改文本节点-innerHTML</button>
        <button onclick="changeText()">修改文本节点-innerText</button>
        <br>
        <button onclick="changeClass()">修改节点class属性</button>
    </div>
</body>
<script>
    /*
    dom操作
        document是整个html文件的顶级节点,要获取html中的节点,必须同过document对象来获取
        查询
		id		getElementById()            	通过id查询一个节点
		类		getElementsByClassName()    	通过class属性查询相对应节点
				getElementsByTagName()			通过标签名查询所有节点
		选择器	querySelector					通过选择器获取一个节点
				querySelectorAll           		通过选择器获取所有节点

        获取文本节点
            innerHTML   获取的是当前节点下的所有子节点和文本节点
            innerText   获取的是当前节点下的所有文本节点

        修改文本节点
            innerHTML   删除当前节点下的所有节点,添加上赋值的字符串为文本节点
            innerText	删除当前节点下的所有文本节点,添加上赋值的字符串为文本节点
     */
    function getById() {
    	//通过对象的ID来获取id=div1的节点 --> getElmentById(ID值)
        console.log(document.getElementById("div1"));
    }

    //HTMLColletion 对象除了有节点之外还有其他属性和方法
    function getByClass() {
//  	console.log(document.getElementsByClassName("mm"));
//通过对象的类名来获取class=mm的节点 --> getElementByClassName(class值)
        var coll = document.getElementsByClassName("mm");
        //通过增强for遍历获取的元素
        for (var i in coll){
        	//打印coll里包含的元素
            console.log(coll[i]);
        }
    }

    function getByTagName() {
//      var coll = document.getElementsByTagName("div");
//		打印下标为0的节点
//      console.log(coll[0]);
//通过对象的标签名来获取<div></div>标签的节点 --> getByTagName(标签名)
		console.log(document.getElementsByTagName("div"));
    }

    function getByQuery() {
    	//通过对象的标签a来获取其中href='https://www.163.com'的第一个节点-->qureySelector(标签名[属性=属性值])
        console.log(document.querySelector("a[href='https://www.163.com']"));
    }

    //nodeList  对象  除了查询的所有节点之外还有其他属性和方法
    function getByQueryAll() {
    	//通过对象的标签a来获取<a></a>的所有节点
    	console.log(document.querySelectorAll("a"));
//      var nodes = document.querySelectorAll("a");
        // for(var i in nodes){
        //     console.log(nodes[i]);
        // }
    }

    //获取文本节点

    function getInner() {
    	//获取a标签中href='https://www.163.com'的第一个节点
        var node = document.querySelector("a[href='https://www.163.com']");
        //打印节点中的所有节点信息
        console.log(node.innerHTML);
    }
    
    function getText() {
    	//获取a标签中href='https://www.163.com'的第一个节点
        var node = document.querySelector("a[href='https://www.163.com']");
        //打印节点中的文本信息
        console.log(node.innerText);
    }

    //修改文本节点
    function changeInner() {
    	//获取a标签中href='https://www.163.com'的第一个节点
        var node = document.querySelector("a[href='https://www.163.com']");
        //更改所有节点为文本节点4399
        node.innerHTML = "4399";
    }

    function changeText() {
    	//获取a标签中href='https://www.163.com'的第一个节点
        var node = document.querySelector("a[href='https://www.163.com']");
		//更改文本节点为4399
        node.innerText = "4399";
    }

    function changeClass() {
    	//根据ID获取div3的节点
        var node = document.getElementById("div3");
        //延时定时器
        setInterval(function () {
        	//当class=r时,把class设置为y
            if (node.getAttribute("class")=="r"){
                node.setAttribute("class","y");
                //当class=y时,把class设置为g
            }else if(node.getAttribute("class")=="y"){
                node.setAttribute("class","g");
            }else{
            	//当class=其他时,把class设置为r
                node.setAttribute("class","r");
            }
            //延时2000毫秒
        },2000);
    }
</script>
</html>

Window对象模型

Navigate浏览器信息

window.open     打开新窗口

窗口名.close      关闭该窗口

screen显示屏幕信息

availWidth      浏览器的宽度
availHeight    浏览器的高度

History历史

window.history.back()      返回上一个页面

history.go(num)                跳转到第num个页面(需要先有历史记录)

Loction主机信息

与Java的URL类是类同的

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
    <script>
        var fam ;
        function openNew() {
        	//window.open 新开窗口
            fam = window.open("https://www.baidu.com");
            console.log(fam.document);
        }
        function closeNew() {
        	//窗口名.close 关闭新开的窗口
            fam.close();
            //window.close不能关闭本窗口
            // window.close();
        }
        function browser() {
        	//浏览器名称
            console.log(navigator.appName);
            //浏览器版本号
            console.log(navigator.appVersion);
            //浏览器代号
            console.log(navigator.appCodeName);
        }
        function screens() {
        	//浏览器显示屏宽度
            console.log(screen.availWidth);
            //浏览器显示屏高度
            alert(screen.availHeight);
        }

        function gotoF() {
        	//跳转历史页面3
            history.go(3);
        }
        function historyNum() {
        	//历史页面数
            console.log(history.length);
        }
        function loc() {
        	//完整URL
            console.log(location.href);
            //主机地址
            console.log(location.host);
            //主机名
            console.log(location.hostname);
            //协议
            console.log(location.protocol);
            //端口号
            console.log(location.port);
        }

        function showImg() {
        	//通过ID 设置img标签的src=img/1.jpg,进行显示
            document.getElementById("img").setAttribute("src","img/1.jpg");
        }
        
        function fl() {
        	//刷新
            location.reload();
        }
        
        function flt() {
        	//把页面替换成输入地址的页面
        	console.log(location.replace("https://blog.csdn.net/weixin_44077840"));
        }
    </script>
</head>
<body>
    <button onclick="openNew()">打开新的窗口</button>
    <button onclick="closeNew()">关闭新的窗口</button>
    <button onclick="browser()">浏览器信息</button>
    <button onclick="screens()">浏览器屏幕信息</button>
    <button onclick="gotoF()">跳转子页面3</button>
    <button onclick="historyNum()">跳转子页面3</button>
    <a href="window_son1.html">跳转子页面</a>
    <button onclick="loc()">地址信息</button>
    <button onclick="showImg()">显示图片</button>
    <button onclick="fl()">刷新</button>
    <button onclick="flt()">跳转</button>
    <img src="" alt="" id="img">
</body>
</html>

 

JavaScript的常用知识点总结完了!!!^-.-^!!!~~~

 

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值