JavaScript
1、格式
<script>
</script>
2、数据类型
2.1、严格检查模式
- 前提Idea需要设置支持ES6语法,在设置中进行设置。
"use strict" :严格检查模式,预防JS随意性导致的一些问题。- 该语句必须写在JS的第一行
<script>
"use strict"
let i = 1;
</script>
2.2、字符串
-
基本字符串使用'' 或者"" 包裹 -
多行字符串编写:使用**``**进行包裹
var msg =`
hello
world
你好呀
nihao
`
-
模板字符串:可以对字符串进行拼接
let name = "tian";
let msg = `你好, ${name}`;
-
字符串的可变性,不可变。
-
大小写转换 let student = "abcdDDDFG";
student.toUpperCase();
student.toLowerCase();
-
字符串截取 student.substring(1)
student.substring(1,3)
-
索引:显示该字符在字符串中第一次出现的位置 student.indexof('a')
2.3、数组
-
定义: let arr = [1,2,3,4,5,6];
-
长度: arr.length
- 假如给arr.length赋值,数组大小就会发生变化,如果赋值过小,元素就会丢失。
-
indexOf:通过元素获得下标索引 arr.indexOf(2)
1
-
slice():截取Array的一部分,返回的一个新数组,类似于String中substring -
push()、pop():在尾部加入和取出数据
-
unshift()、shift():在头部加入和取出数据
-
排序:sort() ["B","C","A"]
arr.sort();
["A","B","C"]
-
反转:reverse() ["A","B","C"]
arr.reverse();
["C","B","A"]
-
数组拼接:concat() ["B","C","A"]
arr.concat([1,2,3]);
["B","C","A",1,2,3]
- 注意:concat()不会修改原数组,会返回一个新的数组。
-
连接符:join ["A","B","C"]
arr.join("-");
"A-B-C"
-
多维数组 let arr = [[1,12,2], ["a",1,1],["2",1,"a"]];
2.4、对象
-
定义: var 对象名 = {
属性名:属性值,
属性名:属性值,
属性名:属性值
}
var person = {
name:"Tom",
age:3,
email:"123456798@QQ.com",
score:66
}
- 多个属性之间用逗号隔开,最后一个属性不加逗号。
- JavaScript中的所有的键都是字符串,值是任意对象。
- 使用一个不存在的对象属性,不会报错!undefined。
-
删除属性:delete delete person.name
-
添加属性:直接给新属性添加值 person.sex = "男";
-
判断属性值是否在这个对象中 `age` in person
`toString` in peroson
-
判断一个属性是否是这个对象自身拥有的 hasOwnProperty()。 person.hasOwnProperty('toString')
person.hasOwnProperty('age')
2.5、iterator
ES6新特性
使用Iterator遍历数组、Map和Set集合
-
遍历集合 let arr = [1,2,3,5,4,6]
for (let x for arr) {
console.log(x);
}
-
遍历Map let map = new Map([["c",12],["h",84],["t",48]]);
for (let x for map) {
console.log(x);
}
-
遍历Set let set = new Set([1,2,57,8]);
for (let x for set) {
console.log(x);
}
3、函数
方式一
function test() {
}
方式二:匿名函数
let test2 = function() {
}
-
手动抛出异常,typeof:判断变量的类型 let test2 = function(x) {
if (typeof x !== "number") {
throw "not a number";
}
if (x >= 0) {
return x;
} else {
return -x;
}
}
-
arguments
- arguments是JS中的一个关键字,它包含传递进来的所有参数,是一个数组。
function test(a, b) {
console.log("a:" + a);
console.log("b:" + b);
for (let i = 0; i < arguments.length; i++) {
console.log(arguments[i]);
}
}
- 问题:arguments包含所有的参数,我们有时候只想使用多余的参数来进行附加操作。
-
rest:ES6新特性
...rest :固定写法,用于接收参数,只能写在最后面。 function test2(a, b, ...rest) {
console.log("a:" + a);
console.log("b:" + b);
console.log(rest);
}
-
方法
- 方法定义:方法就是将函数放在对象中,在对象中只有两个:属性和方法。
let tian = {
name: "cht",
birth: 2000,
age: function () {
let now = new Date().getFullYear();
return now - this.birth;
}
}
4、面向对象编程
在JavaScript中:
原型
class继承
-
定义一个类:class关键字是在ES6中新引入的
class Student{
constructor(name) {
this.name = name;
}
f() {
alert("hello");
}
}
-
继承:extends /继承
class Student1 extends Student{
constructor(name,grade) {
super(name);
this.grade = grade;
}
f1() {
alert("hh";
}
}
5、操作BOM对象
BOM:浏览器对象模型(Browser Object Model)
window
代表浏览器窗口
window.alert(1);
window.innerHeight;
window.innerWidth;
window.ouetrHeight;
window.outerWidth;
screen
代表屏幕尺寸
screen.width;
screen.height;
location
代表当前页面的URL信息
6、操作DOM对象
DOM:文档对象模型(Document Object Model)
浏览器网页就是一个DOM树形结构
- 更新:更新Dom节点
- 遍历Dom节点:得到Dom节点
- 删除:删除一个Dom节点
- 添加:添加一个新的节点
操作DOM节点
-
获得DOM节点 <div id='father'>
<h1>标题一</h1>
<p id="p1">p1</p>
<p class="p2">p1</p>
</div>
- 操作:要将script块写在body中,不然又得值可能获取不到
<script>
let h1 = document.getElementsByTagName('h1');
let p1 = document.getElementById('p1');
let p2 = document.getElementsByClassName('p2');
let father = document.getElementById('father');
let children = father.children;
</script>
-
更新DOM节点 <div id="id1">
</div>
<script>
let id1 = document.getElementById('id1');
id1.innerText = "123456";
id1.innerHTML = '<strong>123</strong>'
id1.style.color = 'red';
id1.style.fontSize = '20px';
</script>
-
删除DOM节点 <div id='father'>
<h1>标题一</h1>
<p id="p1">p1</p>
<p class="p2">p2</p>
</div>
<script>
let p1 = document.getElementById('p1');
let father = p1.parentElement;
father.removeChild(p1);
</script>
-
插入DOM节点 <p id="java">Java</p>
<div id="list">
<p id="se">JavaSE</p>
<p id="ee">JavaEE</p>
<p id="me">JavaME</p>
</div>
- 移动节点:将id为java的节点移动到div中,已存在的节点。
let js = document.getElementById('java');
let list = document.getElementById('list');
list.append(js);
let newP = document.createElement('p');
newP.id = 'newP';
newP.innerText = 'hello';
list.append(newP);
let scriptElement = document.createElement('script');
scriptElement.setAttribute("type", "text/javascript");
list.append(scriptElement);
let styleElement = document.createElement("style");
styleElement.setAttribute('type', 'text/css');
styleElement.innerHTML = 'body{background-color: green}';
document.getElementsByTagName('head')[0].appendChild(styleElement);
7、操作表单
- 文本框----text
- 下拉框----select
- 单选框----radio
- 多选框----checkbox
- 隐藏域----hidden
- 密码框----password
- …
操作表单
-
获得要提交的信息 <form action="post">
<p>
<span>用户名:</span> <input type="text" id="username">
</p>
<p>
<span>性别:</span>
<input type="radio" id="boy" name="sex" value="男"> 男
<input type="radio" id="girl" name="sex" value="女"> 女
</p>
</form>
<script>
let text = document.getElementById('username');
text.value
text.value = 'user';
let boy = document.getElementById('boy');
let girl = document.getElementById('girl');
boy.checked
</script>
-
提交表单
<form action="https://www.baidu.com/" method="post" onclick="return chick()">
<p>
<span>用户名:</span> <input type="text" id="username" name="username">
</p>
<p>
<span>密码:</span> <input type="password" id="input-password">
</p>
<input type="hidden" id="md5-password" name="password">
<button type="submit">提交<\/button>
</form>
<script src="http://cdn.bootcss.com/blueimp-md5/1.1.0/js/md5.js"></script>
<script>
function chick() {
let uName = document.getElementById('username');
let pwd = document.getElementById('input-password');
let md5pwd = document.getElementById('md5-password');
md5pwd.value = md5(pwd.value);
return true;
}
</script>
8、jQuery
jQuery库,里面存在大量的JavaScript函数。
公式:$(选择器).action(事件函数)
<a href="" id="test">点击</a>
<script>
$('#test').click(function () {
alert('hello jQuery');
})
</script>
-
选择器
- id选择器:
$('#id') - class选择器:
$('.class') - 标签选择器:
$('标签名') - *选择器:
$('*') -
事件 mouse:<span id="mouseMove"></span>
<div id="divMove">
鼠标移动
</div>
<script>
$(function () {
$('#divMove').mousemove(function (e) {
$('#mouseMove').text('X:' + e.pageX + 'Y:' + e.pageY);
});
});
</script>
-
操作DOM <ul id="test_ul">
<li class="Java">Java</li>
<li name="JavaScript">JavaScript</li>
</ul>
<script>
$('#test_ul li[name=JavaScript]').text();
$('#test_ul li[name=JavaScript]').css('color', 'red');
</script>
|