JavaScript


JavaScript基础

JavaScript是一门脚本语言,js不需要编译即可运行,运行在客户端,通过浏览器来解析执行JavaScript代码。

JavaScript被用来改进设计、验证表单、检测浏览器、创建cookies等,常用来修改html及css代码、验证表单

嵌入方法

内嵌式:写在head和body里

外链式:在一个文件类型为.js的文件里写入js语句,通过script标签引入到html页面中。 如:script src=”js文件路径地址”>这里不能写js语句/script>

行内式:直接写在标签身上,是一个简写的事件,又称为事件属性。 如:

input type=”button” value=”点我呀!” onclick=”alert(‘暗月渗透测试培训’);”>

button onclick=”alert(‘恭喜你,加入暗月渗透测试培训’);”>点我呀!/button>

变量

它是用来存储信息的容器

var K=’xiaoshaK’;

JavaScript保留关键字

JavaScript的保留关键字不能作为变量、标签或函数名

image-20210706201902289

JavaScript作用域

JavaScript局域变量:在函数内声明,变量为局域作用域

JavaScript全局变量:在函数外声明,变量为全局作用域,网页中的所有脚本和函数都能使用

数据类型

  • 数值型:number(凡是数字都是数值型,不区分整数和小数)
  • 字符串:string(凡是引号包裹起来的内容全部都是字符串)
  • 布尔:boolean(true、false)
  • 对象类型:object(特殊取值null)
  • 未定义型:undefined
  • 对象类型 数组 字典

数字型(number)

只有一种数字类型-数字,它可以是整数,也可以是小数。

以0开头 默认使用8进制来表示我的这个数字

以0x开头 默认使用16进制来表述我的这个数字

如果以-开头 默认为负数

如果带有e:以科学计数法来解析我的这个数字

parseInt(..) 将某值转换成数字,不成功则NaN

parseFloat(..) 将某值转换成浮点数,不成功则NaN

特殊值:

NaN,非数字。可使用 isNaN(num) 来判断。

Infinity,无穷大。可使用 isFinite(num) 来判断。

字符串类型(string)

obj.length 长度

obj.trim() 移除空白

obj.trimLeft()

obj.trimRight)

obj.charAt(n) 返回字符串中的第n个字符

obj.concat(value, …) 拼接

obj.indexOf(substring,start) 子序列位置

obj.lastIndexOf(substring,start) 子序列位置

obj.substring(from, to) 根据索引获取子序列

obj.slice(, end) 切片

obj.toLowerCase() 大写

obj.toUpperCase() 小写

obj.split(delimiter, limit) 分割

。。。等

布尔类型(boolean)

布尔类型只有true或者false

一般用来说明真假

null空

表示变量为空值,用来定义空或者是不存在的引用。

null不等于””或0

undefined未定义

表示变量不含有值,没有定义的值,或者被定义了一个不存在的属性值

!null和undefined区别:

null它表示一个变量被赋予一个空值,而undefined是表示变量还没有被赋值

数组

1、var arr=[]//定义一个空数组

2、var arr=[10,20,{“name”:”tomy”,”age”:19},0.1,”string”,true,[“aaa”,”bbb”]]//定义的同时赋值

3、var arr=new Array();//定义一个空数组

4、var arr = new Array(10,20,{“name”:”tomy”,”age”:19},0.1,”string”,true,[“aaa”,”bbb”])//定义的同时赋值

5、var arr=new Array(10)//定义一个长度为10的数组

操作:

obj.length 数组的大小

obj.push(ele) 尾部追加元素

obj.pop() 尾部获取一个元素

obj.unshift(ele) 头部插入元素

obj.shift() 头部移除元素

obj.splice(start, deleteCount, value, …) 插入、删除或替换数组的元素

​ obj.splice(n,0,val) 指定位置插入元素

​ obj.splice(n,1,val) 指定位置替换元素

​ obj.splice(n,1) 指定位置删除元素

obj.slice( ) 切片

obj.reverse( ) 反转

obj.join(sep) 将数组元素连接起来以构建一个字符串

obj.concat(val,..) 连接数组

obj.sort( ) 对数组元素进行排序

函数

普通函数:

function func(arg){

​ return arg+1;

​ }

​ var result = func(1);

​ console.log(result); var result = func(1);

​ console.log(result);

匿名函数(没有名字的函数称为匿名函数)

setInterval(function(){

​ console.log(123);

},500)

自执行函数(创建函数并且自动执行)

(function(arg){

​ console.log(arg);

})(1);

字典

是一种以键值对形式存储数据的数据结构

var dict = {‘k1’:”moonsec”,’k2’:’moon’,’age’:18};

输出字典元素

for(var item in dict){

console.log(dict[item]);

}

获取指定元素

dict[‘age’] 获取key为age的元素

赋值

dict[‘age’]=10

删除元素

delete dict[‘one’];

delete dict.age;

js的序列化和反序列化

把对象转为字符串

JSON.stringify()

把字符串转为数组

newli = JSON.parse()

序列化即将js中的object转换为字符串

使用toJSONString

var last=obj.toJSONString(); //将JSON对象转化为JSON字符

使用stringify

var last=JSON.stringify(obj); //将JSON对象转化为JSON字符

反序列化 即js中JSON字符串转化为Object

转义

  • decodeURI( ) URl中未转义的字符
  • decodeURIComponent( ) URI组件中的未转义字符
  • encodeURI( ) URI中的转义字符
  • encodeURIComponent( ) 转义URI组件中的字符
  • escape( ) 对字符串转义
  • unescape( ) 给转义字符串解码
  • URIError 由URl的编码和解码方法抛出

eval

此函数可以计算执行某个字符串,并执行其中的js代码

运算符

算术运算符

+ - * / % ++ –

字符串拼接使用“+”

比较运算符

<

>

==

!=

<=

>=

=== 全等于:将数值以及数据类型一并比较

!==不全等于:将数值以及数据类型一并比较

赋值运算符

=

+=

-=

*=

/=

%=

逻辑运算符

&& 全真为真

|| 一个为真就是真

! 取反

三目运算符

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

当我的表达式1成立时 执行表达式2 否则执行表达式3

var max = 2>1?’>’:’<’;

console.log(max);

js操作DOM

DOM(document object model)文档对象模型,是针对HTML和XML的一个API(应用程序接口)。DOM给我们描述了一个具有层次化特点的节点树,允许开发人员增删改查页面的某些部分。

image-20210707130345256

  • JavaScript 能够改变页面中的所有 HTML 元素
  • JavaScript 能够改变页面中的所有 HTML 属性
  • JavaScript 能够改变页面中的所有 CSS 样式
  • JavaScript 能够对页面中的所有事件做出反应

DOM查找元素

document获取节点的基本方法

  • document.getElementById(‘id’); //通过id来获取元素,返回指定的唯一元素。
  • document.getElementsByName(“name”); //通过name来获取元素,返回name=’name’的集合。
  • .document.getElementsByClassName(“classname”) //用classname来获取元素,返回的是一个class=”classname”的集合(不兼容IE8及以下)。
  • document.getElementsByTagName(‘div’); //用元素的标签获取元素,返回所有标签=“div”的集合。

查找

直接查找:

var obj = document.getElementById(‘id’);

间接查找:

文件内容操作:

innerText 仅文本

innerHTML 全内容

value:

input value 获取当前的值

select 获取选中的value的值 document.getElementById(‘s1’).selectedIndex=1

Textarea 获取value的值

操作

样式操作:

className 列出样式 字符串

classList 列出样式 返回数组

​ classList.add 增加样式

​ classList.remove 删除样式

div class=’c1 c2’ styple=’font-size:16px’>/div>

obj.style.fontSize=’16px’;

属性操作:

获取属性:getAttribute()

添加属性:setAttribute(‘xxx’,’alexe’)

删除属性:removeAttribute(value)

创建标签并添加到html中

字符串方式

insertAdjacentHTML()

四种值可用:

  • beforeBegin: 插入到标签开始前
  • afterBegin:插入到标签开始标记之后
  • beforeEnd:插入到标签结束标记前
  • afterEnd:插入到标签结束标记后

image-20210707131708654

image-20210707131603620

对象的方式

document.createElement

image-20210707131456693

image-20210707131503878

提交表单

任何标签都能通过DOM提交

getElementById(‘id’).submit()

其他

console.log 终端输出

alert 弹出框

confirm 确认框 标题 true false

url和刷新

location.href 获取url

location.href =’url’ 重定向

location.reload() 重新加载

定时器

setInterval()

clearInterval()

image-20210707131922787

image-20210707131934995

时间一直变化 点击停止后停止

只执行一次

setTimeout()

clearTimeout()

image-20210707132155723

image-20210707132204884

点击删除后显示已删除,5s后还原

image-20210707132231316

事件

绑定事件两种方式:

  1. 直接标签绑定 onclick=’’,将事件写在标签里

  2. 先获取dom对象,然后进行绑定

    document.getElementById(‘xxx’).onclick()

js应用之走马灯

image-20210707132520494

image-20210707132544678

做到了字体跑起来的效果

js应用之搜索框

image-20210707132640467

image-20210707132651534

鼠标点击输入区域后,提示输入消失

image-20210707132706911

鼠标失去焦点后,提示输入再次出现

image-20210707132804956


文章作者: 晓莎K
版权声明: 本博客所有文章除特別声明外,均采用 CC BY 4.0 许可协议。转载请注明来源 晓莎K !
评论
  目录