JavaScript

一、JavaScript写在哪里
head:用于声明变量、函数、类型、为事件绑定处理函数
body:调用脚本执行
外部脚本:用于定义函数、类型(将代码封装到一个扩展名为js的文件中,然后再需要的地方引用,完成一次定义,多处引用的效果,简化了代码的维护。)
网页弹窗:alert(...)
开发者模式:Source---page可以打断点
二、基本语法
大小写敏感的语言
强类型语言intstring集合{}数组[]
js是弱类型语言---var类型可以接收任何赋予它的类型
分号结尾

注释:
单行注释://
多行注释:/*....*/
方法注释://**
*方法一
*@param {string} param1这是参数1
*/
在调用方法注释的时候就会提示参数是string类型的

字符串:字符串可以用单引号也可以用双引号
单引号只能接收char类型

数据类型:
boolean:布尔类型
number:数字类型
string:字符串类型
Undefined:未定义
Null:空对象
Object:对象类型
Undefined类型和Null类型都是只有一个值的数据类型,值分别是Undefined和Null

查看数据类型使用typeof(param)显示param的数据类型

集合
数组:var array=[1,2,3,4,5];
键值对:var keyValues = {"key1":"value1","key2":"value2","key3":"value3"}
var kv = {}
kv["a"] = "A"   kv["b"] = "B" 
kv.c="C"         kv.d="D"
var kv = {a:"A",b:"B"}
var kv1 = {a:"A",b:"B"} //js对象
var kv2 = {"a":"A","b":"B"} //json格式对象
对象数组:就是把键值对当作数组的里面的一个元素

for循环
for(const kv of array){...}这个类似于foreach(var a in array)
//下面是针对键值对的循环
for(const key in kv2){
console.log(kv2[key])
}
//针对数组时
key就是数组的标,默认从0开始的0,1,2,3的索引下标
可通过for...of来循环大的键值对,然后通过for...in来获取键值对的值
递归的感念:方法调用自己的方法

Array对象的方法
concat()链接两个或多个数组,并返回结果
var ar3 = arr1.concat(arr2)
join()数组放入一个字符串,通过分隔符分隔
var ar2Str = ar3.join(",")---将数组用“,”逗号隔开,也可以用竖线
push()向数组末尾添加一个或多个元素,并返回新的长度
var length = ar2.push(10)(返回的length是新数组的长度)
reverse()颠倒数组的顺序
var ar3 = ar1.reverse();ar3就是ar1颠倒的数组顺序
sort()对数组进行排序
var ar3 = ar1.sort();
splice()删除元素,并向数组添加新元素
splice(参数1,参数2,参数3)
参数1:要删除的元素下标
参数2:要删之后的几个元素(包括它自己)
参数3:要插入的新内容
var ar1 = [2,1,4,3,6,5]
var ar3 = ar1.splice(2,2,7)
splice(2,2,7)---就是删除4和3,并且插入7到删除的地方得到新数组就是ar3 = [2,1,7,6,5]
从某个位置后面全删掉---aplice(2)就是第二位后面的元素都删掉

类型转换
var str = "9867"
var a= parseInt(str)---字符串转换成int类型
var b = parseFloat(str)---字符串转成float

方法使用
function myFunction(param1.param2){
return param1+param2;
}
匿名方法类似C#的委托
var fun = function (param){alert(param)}
fun("HELLO")---使用就会弹窗,类似委托
var sortfun = function(a,b){
return b-a;
}
var ar1 = [2,1,3,4,6,8,7,9,5];
ar1.sort(sortfun);
ar1就会是从大到小的排列
匿名方法定义的同时进行调用
     (function(p1,p2){
return p1+p2
})(1,2)-----就直接输出3了,也可以不传参数

闭包
简单理解就是子方法可以使用父方法的变量

三、DOM
DOM用于操作html文档,准确的说是操作html标签内的内容
操作DOM对象,一般使用document关键字调用

js获取元素的方法
document.getElementById(id):根据id获取元素节点
document.getElementsByClassName(className):根据class的值获取一组元素节点
document.getElementsByName(name):根据name获取一组元素节点
document.getElementsByTagName(tag):根据标签名称获取一组元素节点
event.target.value点击自己获取自己的value

注册事件
元素注册法:onclick="clickMe()"---点击的时候触发
onchange="changeMe()"---文本发生变化的时候触发
对象注册法:document.getElementById(id).onchange = function(){...}
var changeMe = function () {...}
document.getElementById(id).onchange = changeMe

动态添加标签
var newTag = document.createElement("input");
document.body.appendChild(newTag);
在某个元素之前添加标签
document.body.insertBefore(标签id)
document.firstChild;获取第一个子元素
document.childNodes;获取所有子节点元素
document.removeChild();移除所有子节点元素

获取元素内容
var content = document.getElementById("标签id").innerHTML

给标签赋内容
document.getElementById("标签id").innerHTML = "<b>Hello China</b>"
一旦用了innerHTML,标签原本的内容就没有了
innerHTML会把标签和内容都获取
innerText只获取到内容

操作标签样式----style后面的属性使用驼峰命名法
document.getElementById("标签id").style.color = "blue"
document.getElementById("标签id").style.fontFamily= "Arial"
document.getElementById("标签id").style.fontSize= "20px"
document.querySelectorAll("#p/.p")---#p代表id/.p代表class,P是标签

四、BOM(Browser Object Model)
Bom用于操作浏览器行为
操作BOM对象,一般使用window关键字
alert():弹出提示对话框
confirm():弹出确定对话框,返回bool值类型
prompt():弹出用户输入对话框,返回输入的内容,如果取消返回null
setInterval(code,milliseconds):计时器方法可按照指定周期(以毫秒)来调用函数、计算表达式
         code:需要执行的代码
  milliseconds:执行代码的周期
  方法会不停的调用函数,直到 clearInterval() 被调用或窗口被关闭。由setInterval() 返回计时器ID值可用作 clearInterval()方法的参数
var setIntervalId =  setInterval(function(){
console.log(++i)
},1000)
function clearTime(){
clearInterval(setIntervalId )
}
setTimeout(code,milliseconds):一次性计时器方法用在指定的毫秒数后调用函数、计算表达式,使用clearTimeout来清除setTimeout
location:浏览器地址对象
hash:返回一个URL的锚部分
host:返回一个URL的主机名和端口
hostname:返回URL的主机名
href:返回完整的URL
pathname:返回URL路径名
port:返回一个URL服务器使用的端口号
protocol:返回一个URL协议
search:返回一个URL的查询部分
onload 页面加载完成后调用
window.onload = function(){.....}
原文地址:https://www.cnblogs.com/renleiblog/p/13328905.html