一 概念
1.JavaScript
是一种属于网络的脚本语言,已经被广泛用于Web应用开发,常用来为网页添加各式各样的动态功能。 为用户提供更流畅美观的浏览效果。通常JavaScript脚本是通过嵌入在HTML中来实现自身的功能的。
2.浏览器分成两部分
渲染引擎:用来解析HTML与CSS,俗称内核。 JS 引擎:也称为 JS 解释器。 用来读取网页中的JavaScript代码,对其处理后运行
3.javascript有三种引入方式
<button onclick="alert('第一种引入方式')">第一种引入方式</button>
<script type="text/javascript">
alert("第二种引入方式");
</script>
<script type="text/javascript" src="1.js"></script>
alert("第三种方式 外部引入");
4.基本知识
- console.log 浏览器的console打印输出信息-
- alert() 主要用来显示消息给用户
- 通过控制台输出的颜色判断 数据类型
数字 浏览器的console输出的是蓝色 String 黑色 undefined 和 null 灰色
5. prompt(info)浏览看弹出输入框,用户可以输入
6. 作用域`
全局作用域 作用于所有代码执行的环境(整个 script 标签内部)或者一个独立的 js 文件
局部作用域 作用于函数内的代码环境,就是局部作用域。 因为跟函数有关系,所以也称为函数作用域
块作用域由 {} 包括`在其他编程语言中 如 在 if 语句、循环语句中创建的变量
7. 变量
变量是用于存放数据的容器,我们通过变量名获取数据,甚至数据可以修改
本质:变量是程序在内存中申请的一块用来存放数据的空间
var name='lx';
var age=18;
8. 一些符号和流程控制(大致都和java一样)
9. 数据类型转换
数据类型转换 使用表单、prompt 获取过来的数据默认是字符串类型的
转换为字符串类型 toString() String(num) +和字符串拼接的结果都是字符串
转换为数字型 parselnt(string)函数 Number()强制转换函数
转换为布尔型 Boolean()函数
var num=123;
var str = 'sr'+num;
alert(typeof str)
var str1= '13';
num1 = Number(str1)
alert(typeof num1)
10. 一些特殊的
11. js解释器运行
解释运行js代码的时候
第一步 预编译 把所有var 和 function 的 变量名称 提升到当前作用域的最前面 即声明但不赋值
第二步 代码执行 按照代码书写的执行顺序执行
12. innerHTML和innerText
二 基础
1. 函数
function f() {
<!--这个方法用来判断非数字,并且返回一个值,如果是数字返回的是false,如果不是数字返回的是true-->
alert(isNaN(age));
<!--typeof 可用来获取检测变量的数据类型 null 是object 其它均正常返回-->
alert(typeof name);
}
f();
var fn = function () {
console.log("匿名函数")
};
fn();
function f1(param1, param2) {
arguments.length;
}
2. JavaScript 中的对象分为3种:自定义对象 、内置对象、 浏览器对象
查文档 https://developer.mozilla.org/zh-CN/
3. DOM
常用的方法
document.getElementById('标签的id名')
document.getElementsByTagName("div")
document.getElementsByClassName('类名');
document.querySelector('.uid');
document.querySelectorAll('div');
document.body;
4.练习
<button>按钮1</button>
<script type="text/javascript">
var btn=document.querySelector('button')
btn.onclick =function f() {
var res=prompt('你的密码');
if (res=='123'){
alert('密码输出正确')
}else{
alert('密码错误')
}
}
</script>
5… 节点的概念
var ol = document.querySelector('ol');
console.log(ol.firstChild);
console.log(ol.lastChild);
console.log(ol.lastElementChild.outerHTML);
console.log(ol.children[0]);
6… 事件
事件 JavaScript 使我们有能力创建动态页面,而事件是可以被 JavaScript 侦测到的行为。 事件三要素 事件源(谁) 事件类型(什么事件) 事件处理程序(做啥)
var btn = document.getElementById('btn');
btn.onclick = function () {
alert('点秋香');
}
var div = document.getElementsByTagName('div');
for (let i = 0; i < div.length; i++) {
div[i].onclick = function () {
console.log('我被选中了');
}
div[i].style.width = '200px';
}
<button>按钮1</button>
<button>按钮2</button>
<div>事件对象</div>
<a href="/www.baidu.com">阻止默认行为</a>
<script type="text/javascript">
var btns = document.querySelectorAll('button');
btns[0].onclick =function (){
alert("第一个函数");
}
btns[0].onclick =function (){
alert("第二个函数");
btns[0].onclick=null;
}
btns[1].addEventListener("click",function (){
alert('第一次调用');
},false)
btns[1].addEventListener("click",remain)
function remain (){
alert('第二次调用');
btns[1].removeEventListener("click",remain);
}
var div = document.querySelector('div');
div.onclick = function(e) {
console.log(e);
}
var pre_even =document.querySelector("a");
pre_even.addEventListener("click", function (e) {
e.preventDefault();
})
document.addEventListener("contextmenu",function (e){
e.preventDefault();
})
document.addEventListener("selectstart",function (e){
e.preventDefault();
})
</script>
7. 练习 判断用户名是否是手机号
<body>
<form action="success.html">
用户名<input type="text" class="un" name="username"><br>
密码 <input type="password" class="pwd"><br>
<input type="submit" class="st">
</form>
<script type="text/javascript">
var st= document.querySelector('.st')
st.onclick =function (e) {
var un=document.querySelector('.un').value;
if (!(/^1[3|5|8][0-9]\d{4,8}$/.test(un))){
alert(false)
e.preventDefault();
}else {
}
}
</script>
8. 对象
<script>
Star.prototype.sing = function() {console.log('我会唱歌');}
var obj1 = new Object();
var obj2 = {};
function Star(uname,age) {
this.uname = uname;
this.age = age;
this.sing = function() {
console.log('我会唱歌');
}
}
var ldh = new Star('刘德华',18);
function fn() {
console.log('普通函数的this' + this);
}
window.fn();
var o = {
sayHi: function() {
console.log('对象方法的this:' + this);
}
}
o.sayHi();
function Star() {};
Star.prototype.sing = function() {
}
var ldh = new Star();
var btn = document.querySelector('button');
btn.onclick = function() {
console.log('绑定时间函数的this:' + this);
};
window.setTimeout(function() {
console.log('定时器的this:' + this);
}, 1000);
(function() {
console.log('立即执行函数的this' + this);
})();
</script>
var star = {
name: 'pink',
age: 18,
sex: '男',
sayHi: function () {
alert('大家好啊~');
}
};
star.sayHi();
var obj = new Object();
obj.name = '张三丰';
obj.age = 18;
obj.sex = '男';
obj.sayHi = function() {
console.log('hi~');
}
function Star(uname,age,sex) {
this.name = uname;
this.age = age;
this.sex = sex;
this.sing = function(sang){
console.log(sang);
}
}
var ldh = new Star('刘德华',18,'男');
console.log(typeof ldh)
三 BOM
1. 概念
BOM Browser Object Model 浏览器对象模型。 把 浏览器当作一个对象来看待。顶级对象 window 比 DOM 更大。它包含 DOM BOM 学习的是浏览器窗口交互的一些对象 它是一个全局对象。定义在全局作用域中的变量、函数都会变成 window 对象的属性和方法。 在调用的时候可以省略 window,前面学习的对话框都属于 window 对象方法。 BOM 是浏览器厂商在各自浏览器上定义的,兼容性较差
2. window.onload()
var btn = document.querySelector("button");
btn.addEventListener('load',function (){
alert('无论button在哪,都不会找不到')
})
btn.addEventListener('DOMContentLoaded',function(){
alert('比load加载更快一些')
})
3. window.onresize
是调整窗口大小加载事件(就是该页面的窗口大小),当触发时就调用的处理函数。 我们经常利用这个事件完成响应式布局。通过window.innerWidth (当前屏幕的宽度)进行操作
4. 定时器
5. this指向
6. 其他`
7. 判断手机端还是电脑端
if((navigator.userAgent.match(/(phone|pad|pod|iPhone|iPod|ios|iPad|Android|Mobile|BlackBerry|IEMobile|MQQBrowser|JUC|Fennec|wOSBrowser|BrowserNG|WebOS|Symbian|Windows Phone)/i))) {
window.location.href = "";
} else {
window.location.href = "";
}
history.go();
|