ECMAScript: JS的核心,规定了JS的语法 和 词法。
DOM:Document Object Model 文档对象模型 主要用来跟网页打交道的。可以把整个网页看作为DOM的对象。提供访问和操作网页内容的方法。
BOM:Browser Object Model 浏览器对象模型 主要用来跟浏览器打交道的。提供与浏览器交互的方法。
JavaScript的作用
1.js可以动态的修改html及css的代码,DOM操作。
2.js可以对表单进行校验。
JavaScript的引入方式
在一个html页面中引入js的方式有两种:
1、内部js:也就是在html源码中嵌入js代码
语法格式:
<script type="text/javascript">
这里写你的js代码
</script>
注意:
1、<script>标签可以写在html页面中的任何地方。而且一个页面中可以有多个<script>标签。
2、type="text/javascript"可以省略
css和js区别
css属于并行加载语言,写在head标签中。
JS是阻塞式加载语言,自上往下加载,类似单线程。一般写在body标签的下面
2、外部js:也就是将js代码单独写成一个js文件(扩展名是 .js而不是 .javascript), 在html代码中引入这个封装好的js文件
语法格式:
<script type="text/javascript" src="xxx.js"></script>
注意:无论是内部js还是外部js在html中引入的位置是随意的,<head>标签中可以引入,<body>标签一样可以引入
JavaScript的基本语法
js变量的定义
整型: var i = 0;
浮点型:var d = 3.14;
字符串:var str = “黑马程序员”;
布尔型:var b = true;
语法格式:
var 变量名 = 变量值;
输出浏览器控制台方式有两种:
1)alert(输出信息);页面弹出框
2)直接输出到浏览器的控制台中:console.log(输出信息);
查看某个变量的数据类型
使用格式: typeof 变量名
注意:typeof 变量名,返回值都是字符串类型。
查看控制台输出的都是什么数据类型
使用格式:typeof typeof 变量名
js的数据类型也分为基本数据类型(原始数据类型)和引用数据类型(复合数据类型),
5种基本数据类型(原始数据类型)
数字类型:number 包含了小数和整数
布尔类型:boolean 只有两个值: true(真)| false(假)
字符串类型:String 包含字符和字符串,既可以使用双引号又可以使用单引号
未定义类型:undefined 只有一个值,即 undefined未定义
空类型:null 只有一个值 null,表示空对象
补充: 值 undefined 实际上是从值 null 派生来的,因此 ECMAScript 把它们定义为相等的。
alert(null == undefined); 输出 "true",尽管这两个值相等,但它们的含义不同。
1种引用数据类型(复合数据类型)
object : 对象
与java一样,js中的对象都是引用数据类型,所以你也可以使用我们所熟知的new关键字来“创建对象”。
var obj = new object;
js运算符
在js中,JavaScript运算符与Java运算符基本一致。
赋值运算符:等号(=), 举例: var x = 5。
比较运算符: > < >= <= == != === !==
== 和 === 的区别:
两者都可以用来比较两个变量的值是否相等。
== 先做数据类型的转换,再进行比较。比如可以将整数转换为字符串,或者将字符串转换为整数等。
=== 全等 严格的比较,如果符号两侧的数据类型不一致,则立刻返回false。
!= 和 !== 的区别:
!= 在表达式两边的数据类型不一致时,会隐式转换为相同数据类型,然后对值进行比较.
!== 不会进行类型转换,在比较时除了对值进行比较以外,还比较两边的数据类型,它是恒等运算符===的非形式.
逻辑运算符: && || !
&& 并且,双与:只有运算符两侧都为true,结果才是true; 一假即假。
|| 或者,双或:只要运算符两侧有一个是true,结果就是true;一真即真。
! 取反: !true = false; !false=true;
注意:在js中,不光boolean值能够参与逻辑运算。所有的值都能参与逻辑运算.
JS中6个假的:
数字0, 空字符串‘’或者"", false, 空null, undefined, NaN
算数运算符: + - * / %
三元运算符: 条件表达式1 ? 条件表达式2 : 条件表达式3;
js的逻辑控制语句
跟java一样,js也存在if、if-else、switch、for、while、do-while等逻辑语句,与java使用方式一致
js的函数(重点)
普通函数
语法格式:
function 函数名(参数列表) {
js逻辑代码
}
函数调用:函数名(实际参数);
注意:一定要加上小括号
js函数和java中的不同点:
1、函数需要被调用才能执行。
2、js中,如果函数需要返回值我们直接return就行了。
定义函数的时候不需要声明返回值的类型,因为js是弱数据类型,返回什么数据类型都是var。
3、在js中,如果我们需要给函数传递参数,那么我们直接写变量名就行,不需要声明传入变量的类型。
4、在js中,不存在函数重载的概念,如果2个函数名相同,后面出现的函数会覆盖前面的函数。
5、如果函数的声明带有参数,但是调用时不带参数,函数也可以正常被调用。
6、如果函数声明时没有参数列表,调用的时候传入参数,函数也能照样执行。
7、在JS中,可以使用arguments来获取实际传入的参数。arguments是实参的参数数组。
匿名函数(难,理解):匿名函数也就是没有名字的函数
语法格式:
function(参数列表){
js逻辑代码
}
匿名函数没有办法直接调用,一般情况下匿名函数有两种使用场景:
第一种: 将匿名函数赋值给一个变量,使用变量调用函数。
定义函数并赋值给变量:
var fn = function(参数列表) {
js逻辑代码
};
调用函数:fn(实际参数);
获取元素
语法格式:
var oEle = document.getElementById(id的名称);
返回一个页面上元素对象
解释:
document: 文档 我们HTML里面就是指整个网页,属于一个对象。
get Element By Id
获取 一个元素 通过 Id
整句翻译过来就是:在页面上通过Id来获取一个元素。
阻止右键菜单弹出
例句:
<script type="text/javascript">
document.oncontextmenu = function () {
console.log("hello");
return false;
}
</script>
定时器setInterval
语法结构:
var timer = window.setInterval(code, millisec) 按照指定的周期(间隔)来执行函数或代码片段。
参数1: code 必须写。 执行的函数名或执行的代码字符串。
参数2: millisec 必须写。时间间隔,单位:毫秒。
window可以理解为浏览器窗口。
timer 返回值:一个可以传递给 window.clearInterval(定时器的返回值) 从而取消对 code 的周期性执行的值。
在关闭定时器时需要使用定时器的返回值作为参数,否则不知道关闭哪个定时器。
window.clearInterval(timer)关闭定时器的代码
window.onload: 表示在整个页面加载完毕之后在执行这里面的代码
JavaScript定时器:setTimeout
setTimeout() 在指定的毫秒数后调用函数或执行代码片段。和setInterval()不同的是setTimeout()只是执行一次,而setInterval()每隔指定的时间就会执行,
如果不停止计时器就会一直执行代码片段。
语法结构:
window.setTimeout(code,millisec)
参数:
code 必需。要调用的函数。
millisec 必需。在执行代码前需等待的毫秒数。
JavaScript样式获取或修改
获取或设置样式:
想完成弹出广告案例,除了使用上述介绍的定时器,还必须知道如何获取样式的获取和修改。
语法格式:
obj.style.样式名 获得指定“样式”的值。样式名包括标签的宽、高、背景颜色等。
obj.style.样式名= 样式值 给指定“样式”设置样式。
注意:如果属性有多个单词使用“-”连接,样式名书写的时候需要将“-”删除,并将后一个单词首字母大写。
例如:background-color 需要改成 backgroundColor
将一个字符串转换成一个数字使用:
window.praseInt(字符串);整型
window.parseFloat(字符串);浮点型
例(轮播图):
<script type="text/javascript">
window.onload = function () {
// 通过轮播图标签id获取图片标签
var oIdimg = document.getElementById("idImg");//这里获取对应的图片的标签id
// 初始化一个变量 第一次播放的图片名编号
var n = 1;
// 定时器 匿名函数
window.setInterval(function () {
//利用n自增循环src里的图片的名
n++;
// 一共3张图到4自动回到1
if (n == 4) {
n = 1;
}
oIdimg.src = "img/" + n + ".jpg";
}, 2000);
};
</script>
例(定时弹广告):
<script type="text/javascript">
window.onload = function() {
// 获取广告的标签
var adImg = document.getElementById("adImg");
//开启定时器,3s后弹出广告
window.setTimeout(function() {
//让广告显示就是设置display:block
adImg.style.display = "block";
//广告显示完成之后,在消失
window.setTimeout(function() {
//让广告消失,设置display:none
adImg.style.display = "none";
}, 3000);
}, 3000);
};
</script>