JavaScript
在Web世界里,只有JavaScript能跨平台、跨浏览器驱动网页,与用户交互
新兴的Node.js把JavaScript引入服务器端;
基础
JavaScript代码可写在哪里
1.JavaScript代码可以直接嵌在网页的任何地方
,通常放在<head>
中,由<script></script>
包含,可被浏览器直接执行;
2.把JavaScript代码放在一个单独的.js
文件中,然后在HTML中通过<script src="..."></script>
引入.js
文件;
3.多个页面可以各自引用同一份.js
文件,同一个页面可以引入多个.js
文件,还可以在页面中多次编写<script>...</script>
代码,浏览器按照顺序依次执行,关于<script>
标签的type
属性,不必显示指定,默认是JavaScript;
4.注释形式有两种://...行注释
,/*...块注释*/
在谷歌浏览器开发者工具中,点击Console
,在这个面板中可直接输入JavaScript代码,按回车
后执行;在Sources
可以打断点、单步执行
等高级调试技巧。
语法
每个语句以;
结束,语句块{...}
,但是,并不强制要求在每个语句的结尾加
;
,浏览器中负责执行JavaScript代码的引擎会自动在每个语句的结尾补上;
,严格区分大小写。
数据类型和变量
1.Number
JavaScript不区分整数和浮点数,统一用Number表示
NAN——表示Not a Number,当无法计算结果时用NAN表示
Infinity——表示无限大,当数值超过了JavaScript的Number所能表示的最大值时
十六进制用0x
前缀和0-9,a-f
表示
可直接进行四则运算,规则和数学一致
2.字符串
字符串用以单引号'',或双引号""
括起来的任意文本。
字符串内部既包含''
又包含""
可以使用转义字符\
;
//字符串是不可变的,如果对字符串的某个索引赋值,不会有任何错误,但是,也没有任何效果
var s = 'Hello, world!';
s.length; // 13
var s = 'Hello, world!';
s[0]; // 'H'
s[6]; // ' '
s[7]; // 'w'
s[12]; // '!'
s[13]; // undefined 超出范围的索引不会报错,但一律返回undefined
/*toUpperCase()全部变大写,toLowerCase()全部变小写,indexOf()搜索指定字符串出现的位置
substring()返回指定索引区间的子串:substring(0,5)——[0,5),substring(7),从7开始
*/
3.布尔值
与Java一致
4.比较运算符
支持对任意数据类型做比较;
==
:自动转换数据类型再比较;
===
:不会自动转换数据类型,如果数据类型不一致,返回false
,如果一致,再比较
NaN
与所有其他值都不相等,包括它自己
,判断NaN的方法是isNaN(NaN)
要比较两个浮点数是否相等,只能计算它们之差的绝对值,看是否小于某个阈值:
1 / 3 === (1 - 2 / 3); // false
Math.abs(1 / 3 - (1 - 2 / 3)) < 0.0000001; // true
undefined:值未定义,仅仅在判断函数参数是否传递的情况下有空;
5.数组
5.1(推荐使用
) JavaScript数组可以包括任意数据类型[1, 2, 3.14, 'Hello', null, true]
;
5.2 通过new Array(num1,num2,num3)。
//获取Array的长度,直接访问length属性
var arr = [1, 2, 3];
arr.length; // 3
//length的赋值会导致Array大小的变化
arr.length = 6;
arr; // arr变为[1, 2, 3, undefined, undefined, undefined]
arr.length = 2;
arr; // arr变为[1, 2]
6.对象
JavaScript对象是一组由键-值
组成的无序集合
//对象的键都是字符串类型,值可以是任意类型,
var person={
name:'Bob',
age:20,
tags:['js','web','mobile'],
city:'Shanghai',
hasCar:true,
zipcode:null
};
//获取一个对象的属性:对象变量.属性名
person.name;//'Bob'
7.变量
变量可以是任意数据类型,变量是大小写英文、数字、$、_
的组合,不能用数字开头
,也不能是JavaScript的关键字
,申明一个变量用var
语句,变量名也可以是中文,不适用var申明的变量,会自动被申明为全局变量
,启用strict
模式则需要强制通过var
变量申明,在JavaScript代码的第一行写上'use strict';
刷新
2.全页面刷新
//刷新当前页
window.loaction.reload();
//刷新父亲对象
parent.location.reload();
//刷新
BootStrap
select标签
样式选择
- 设置按钮的样式
data-style=""
; - 菜单的箭头
class="show-menu-arrow"
; - style自定义样式;
data-icon="glyphicon-heart"
给option
添加小图标;data-content
可以在option
中插入html元素;data-subtext
实现option
二级标题,实现提示或者其他效果;select
标签展示二级 标题,初始化selectpicker
时设置showSubtext="true"
;- 通过设置
data-actions-box="true"
来添加全选和全不选的按钮 ,按钮的文本; - 设置
option的data-divider="true"
添加数据分割线 ; - 用
data-header
为下拉菜单设置菜单头 ; - 在对应的
select,option,optiongroup
上设置disabled
即可设置为不可用
单选框
- 单选框默认是没有多选框的选中之后的”√”图标的,如果想要加上这个图标的话,需要在样式中加入
show-tick
即可
<!--若想支持模糊查询,添加data-live-search="true"-->
<select class="selectpicker"data-live-search="true">
<option>value1</option>
<option>value2</option>
</select>
多选框
- 相对于单选框,添加multiple;
- 多选限制:data-max-options=””/初始化selectpicker时设置maxOptionsText;
- title自定义按钮的文本;
- 通过属性
data-selected-text-format
来控制选中的值的显示
可选的值有如下4个:
1.values: 逗号分隔的选定值列表(系统默认);
2.count: 如果选择了一个项,则显示选项值。如果选择多于一个,则显示所选项的数量,如选择2个,则下拉框显示2个已被选中;
3.count > x: 当count的值小于x时,展示逗号分隔的选定值列表;当count>x时,显示x个被选中;
4.static:无论选中什么,都只展示默认的选中文本。
<select class="selectpicker" multiple data-max-options="2" title="请选择一个">
<option>value1</option>
<option>value2</option>
</select>
$('.selectpicker').selectpicker({
'selectedText':'cat',
'maxOptionsText':2;
})
File input
https://austinxishou.github.io/2017/11/01/webdesign/FileinputJs/
Ajax Uploads
Asynchronous (异步)
- 这是默认模式,uploadAsync属性值为true。
- 当上传多个文件,异步模式为每一个文件上传触发并行服务调用;
- 通过设置maxFileCount属性控制一次上传的最大个数;
- 服务端接收的数据
- file data
- extra data: uploadExtraData 属性,键值对
Synchronous (同步)
- uploadAsync属性值为false,
- 触发一个批量上传到服务器的调用,并将文件作为数组对象从客户端发送到服务器。