JavaScript 学习
一、输出
为方便调试可以输出内容,但是用户是看不到的。要在开发者模式中看。
console
.
log
(
"Hello"
);
二、外部文件引用
可以直接在html中写JS
<head>
<meta charset="utf-8">
<script>
console.log("hello")
</script>
</head>
也可以外部引用,先写一个JS文件,然后加载到html中。
三、变量
命名规则:
-
名称可包含字母、数字、下划线(_)和美元符号($),不以数字开头
-
名称对大小写敏感(y 和 Y 是不同的变量)
-
保留字(比如 JavaScript 的关键词)无法用作变量名称
声明:
用var。声明之后,变量是没有值的。(技术上,它的值是 undefined。)
赋值:
var carName;
carName = "porsche";
var carName = "porsche";
var person = "Bill Gates", carName = "porsche", price = 15000;
这些方式都可以。
作用范围:
局部变量,在函数内声明,只能在函数内使用。
// 此处的代码不能使用 carName
function myFunction() {
var carName = "Volvo";
// 此处的代码可以使用 carName
}
// 此处的代码不能使用 carName
全局变量,在函数外声明,全局访问。
PS:和java不一样,js没有代码块概念。
if(b){
var num=10;
}
console.log(num);
在java中,这样是不行的,在js中,可以。num是全局变量。
四、数据类型
1.number类型:
1/0在java中会出错,这边表示负无穷大。
NaN就字符串转换数字的时候出错了,转不了。
转换:
可以将数字字符串转换Number类型,比较严谨不想parseFloat,“11a”也会转成11
var n = Number("123");
也可以用parseInt和parseFloat,功能比较全。都会输出123
console.log(parseInt("123"));
console.log(parseInt("123agsdg"));
console.log(parseInt("123aaaa456"));
console.log(parseInt(" 123 "));
2.boolean类型:
就是true和false比较简单。
转换:
当value为0、-0、null、""、false、undefined、NaN时,那么Boolean()转换成Boolean类型的值为false,其他都是true。
var b = Boolean(0);
3.undefined类型:
声明了变量,但是没用赋值就是这个值。
4.string类型:
不区分单引号和双引号,都是字符串。
转换:
可以把这些转成string
var s1 = String(11);
var s2 = String(true);
var s3 = String(undefined);
var s4 = String(null);
var s5 = String(NaN);
5.null类型:
好比java中,声明了对象,没创建对象。
但是JS中,输出null的时候会是object类型。
五、运算符
1.算术运算符(+ - * / % ++ --)
/ 除法,有余数和java不一样
%取余数
++ -- 自增 自减
单独使用在前在后没区别
组合使用,在前先自增,再将自增结果带入运算;在后先把原来值带入运输,再自增。
var num = 1;
var num2 = ++num;
console.log(num);
console.log(num2);
都是2
var num = 1;
var num2 = num++;
console.log(num);
console.log(num2);
num为2,num2为1
2.赋值运算符(= += *= /= %=)
3.条件运算符(=== == > < >= <= !=)
4.字符串运算符(+ +=)
5.逻辑运算符(&& || !)
6.三元运算符 (表达式1?表达式2:表达式3)
六、条件/循环语句
和Java差不多
七、函数
JavaScript 函数通过 function 关键词进行定义,其后是函数名和括号 ()。
函数名可包含字母、数字、下划线和美元符号(规则与变量名相同)。
圆括号可包括由逗号分隔的参数
由函数执行的代码被放置在花括号中:{}
var x = myFunction(7, 8); // 调用函数,返回值被赋值给 x
function myFunction(a, b) {
return a * b; // 函数返回 a 和 b 的乘积
}
八、常用内置对象
可以去这查看
JavaScript 教程
关键是如何去查看文档,学习对象和方法。
1.字符串对象
JavaScript String 参考手册
用“”,‘’就可以创建字符串对象。如果字符串中要输出“,‘,\,要用\来转义。
常用方法:
charAt()
返回指定位置处的字符。
indexOf()
返回值在字符串中第一次出现的位置。
2.数组
创建
常见操作
3.Math对象
主要是数学相关
4.日期对象
JavaScript Date 参考手册
5.正则对象
匹配字符串个数为6-12的字符串。
九、对话框
警告(window可以省略)
window.alert("这是警告");
询问
var key = prompt("请输入密码");
console.log(key);
确认
var flag = confirm("确认登陆吗?");
if(flag){
console.log("确认登陆");
}else{
console.log("取消登陆");
}
十、定时器
每2s执行一次,10s后执行一次(之后不执行)
十一、自定义对象
用new关键字创建
var obj = new Object();
obj.name = "Mike";
obj.fun = function (age) {
console.log("Hello " + this.name + age);
}
//使用对象
console.log(obj.name);
obj.fun(1);
字面量创建
var obj = {
name: "Mike",
fun: function (age) {
console.log("Hello " + this.name + age);
}
}
//使用对象
console.log(obj.name);
obj.fun(1);
构造方法创建对象
十二、DOM操作
把文档加载进去,然后把每个部分封装成对象,我们可以操作这些对象,实现动态的改变整个页面。
1.Document对象
如果您希望访问 HTML 页面中的任何元素,那么您总是从访问 document 对象开始。
查找HTML元素:
-
getElementById根据id属性获取,返回单个Element对象
-
getElementsByTagName根据标签名获取,返回Element对象数组
-
getElementsByClassName根据class属性获取,返回Element对象数组
-
getElementsByName根据name属性获取,返回Element对象数组
<body>
<h2>通过 Id 查找 HTML 元素</h2>
<p id="intro">Hello World!</p>
<p>此示例演示了 <b>getElementsById</b> 方法。</p>
<p id="demo"></p>
<script>
var myElement = document.getElementById("intro");
document.getElementById("demo").innerHTML =
"介绍段落的文字是" + myElement.innerHTML;
</script>
</body>
改变HTML元素:
属性
|
描述
|
element.innerHTML = new html content
|
改变元素的 inner HTML
|
element.attribute = new value
|
改变 HTML 元素的属性值
|
element.setAttribute(attribute, value)
|
改变 HTML 元素的属性值
|
element.style.property = new style
|
改变 HTML 元素的样式
|
添加删除元素:
document.createElement(element)
|
创建 HTML 元素
|
document.removeChild(element)
|
删除 HTML 元素
|
document.appendChild(element)
|
添加 HTML 元素
|
document.replaceChild(element)
|
替换 HTML 元素
|
document.write(text)
|
写入 HTML 输出流
|
添加事件:
方法
|
描述
|
document.getElementById(id).onclick = function(){code}
|
向 onclick 事件添加事件处理程序
|
2.Element对象
3.插入删除节点
插入
删除 - 父删子,不能自己删自己
4.DOM表单操作
<div>
<form action="#" method="get">
姓名:<input type="text" name="username" id="username"><br>
女<input type="radio" name="sex" value="female" id="female" checked="true">男<input type="radio" name="sex" value="male"
id="male"><br>
故乡:<select name="city" id="city">
<option value="1" id="shanghai">上海</option>
<option value="2" id="beijing">北京</option>
<option value="3" id="suzhou">苏州</option>
<option value="4" id="guangzhou">广州</option>
</select><br>
<input type="submit">
</form>
</div>
</body>
// 获取/设置表单的value信息
var username = document.getElementById("username");
username.value = "张三";
console.log(username.value);
//获取单选框选择状态,或设置选择状态
var sexObj = document.getElementsByName("sex")
for (var i = 0; i < sexObj.length; i++) {
console.log(sexObj[i].value + " " + sexObj[i].checked);
}
//设置下拉框
var select = document.getElementById("city");
select.selectedIndex = 2;
//设置禁用
var sex = document.getElementById("male");
sex.disabled = true;
5.常见DOM事件
-
单击事件
var btn = document.getElementById("btn");
btn.onclick = function(){
var ele = document.getElementById("h1");
ele.style.color="red";
}
-
焦点事件
<div>
用户名:<input type="text" id="username"><span id="info"></span>
</div>
var userEle = document.getElementById("username");
var info = document.getElementById("info");
//获得焦点
userEle.onfocus = function () {
info.innerHTML = "请输入6-8位"
}
//失去焦点
userEle.onblur = function () {
var reg = /^\w{6,8}$/;
var result = reg.test(userEle.value)
if (result) {
info.innerHTML = "验证成功"
} else {
info.innerHTML = "验证失败"
}
}
-
改变事件
<select name="city" id="city">
<option value="suzhou">苏州</option>
<option value="shanghai">上海</option>
<option value="beijing">北京</option>
</select>
var city = document.getElementById("city");
city.onchange = function () {
console.log(this.value);
}
-
鼠标移入移出事件
<head>
<meta charset="utf-8">
<style>
.red {
background-color: red;
}
.blue {
background-color: blue;
}
</style>
</head>
<body>
<div id="test" class="red">Hello World</div>
</body>
var ele = document.getElementById("test");
//移入
ele.onmouseover = function () {
ele.setAttribute("class", "blue");
}
//移出
ele.onmouseout = function () {
ele.setAttribute("class", "red");
}
-
页面加载事件
<head>
<meta charset="utf-8">
<script>
window.onload = function(){
//正常是无法拿到,因为在元素没加载完成,但是在这可以
var ele = document.getElementById("test");
console.log(ele);
console.log("页面加载完成");
}
</script>
</head>
<body>
<div id="test">Hello World</div>
</body>
-
表单事件
<body>
<form action="#" id="form">
<input type="text" name="user" id="user" placeholder="Please enter user name...">
<input type="text" name="password" id="password" placeholder="Please enter password...">
</form>
<button id="submit">submit</button>
<button id="reset">resest</button>
</body>
var form = document.getElementById("form");
var submit = document.getElementById("submit");
var reset = document.getElementById("reset");
submit.onclick = function () {
form.submit();
}
reset.onclick = function () {
form.reset();
}
6.BOM常用对象
Window
Location
History
-
history.back() - 等同于在浏览器点击后退按钮
-
history.forward() - 等同于在浏览器中点击前进按钮
十三、原型
原型
有时,您希望向所有给定类型的已有对象添加新属性(或方法)。
有时,您希望向对象构造器添加新属性(或方法)。
function Person(first, last, age, eyecolor) {
this.firstName = first;
this.lastName = last;
this.age = age;
this.eyeColor = eyecolor;}
Person.prototype.nationality = "English";
function Person(first, last, age, eyecolor) {
this.firstName = first;
this.lastName = last;
this.age = age;
this.eyeColor = eyecolor;}
Person.prototype.name = function() {
return this.firstName + " " + this.lastName;};
十四、JS版本
JS2015(es6)
-
let
-
const
const 语句允许您声明常量(具有常量值的 JavaScript 变量)。
常量类似于 let 变量,但不能更改值。