JavaScript

 一、JavaScript介绍

        1、概念:JavaScript 是一种网页编程技术,用来向 HTML 页面添加交互行为。 JavaScript 是一种基于对象和事件驱动的解释性脚本语言,直接嵌入 HTML 页面,由浏览器解释 执行代码,不进行预编译。

        2、特点:①、可以使用任何文本编辑工具编写,只需要浏览器就可以执行程序

                         ②、解释执行:事先不编译,逐行执行

                         ③、基于对象:内置大量现成对象

        3、js的组成: ①、ECMAScript:定义核心语法,关键字,运算符,数据类型等系列标准

                                ②、DOM:文档对象模型,将一个html页面的所有节点看成是一个一个的对象。更有层次感的管理每 一个节点。

                                ③、BOM:浏览器对象模型,是对浏览器窗口进行访问和操作。使用 BOM,开发者可以移动窗口、改 变状态栏中的文本以及执行其他与页面内容不直接相关的动作。使 BOM 独树一帜且又常常令人怀 疑的地方在于,它只是 JavaScript 的一个部分,没有任何相关的准。

 二、HTML和js的结合

        1、js的三种使用方式

                ①、行内脚本

<button onclick="alert('弹框测试')">点我一下</button>

                ②、内部脚本


<script>
    alert("弹框")
</script>

                ③、外部脚本


<script src="test.js"></script>

三、JavaScript的使用

        1、变量

                ①、声明变量:var x ;

                ②、数值类型:number(不区分整型数值和浮点型数值 所有数字都采用 64 位浮点格式存储,类似于double 格式)

                ③、字符串:String(首尾由单引号或双引号括起)

        2、自动类型转换:

                ①、数字 + 字符串:数字转换为字符串 10+’a’ -> 10a

                ②、数字 + 布尔值:true转换为1,false转换为0 true+5->6

                ③、字符串 + 布尔值:布尔值转换为字符串true或false true+’a’->truea

                ④、布尔值 + 布尔值:布尔值转换为数值1或0 true+true->2

        3、数据类型转换函数

                ①、parseInt:强制转换成整数 。如果不能转换,则返回 NaN (NaN 属性是代表非数字值的特殊值。该属性用于指示某个值 不是数字) 例如:parseInt("6.32")=6

                ②、parseFloat:强制转换成浮点数 如果不能转换,则返回 NaN 例如:parseFloat("6.32")=6.32

                ③、typeof:查询数值当前类型,返回 string / number / boolean / object 例如:typeof("test"+3)=="string"

        4、null 与 undefined

                ①、null 在程序中代表“无值”或者“无对象” 可以通过给一个变量赋值 null 来清除变量的内容。                 

                ②、undefined 声明了变量但从未赋值或者对象属性不存在。

        5、关系运算

                ①、严格相等:a===b,既类型相同,又值相同

                ②、值相等:a==b,值相同

                ③、非严格相同:!===

        6、常用字符串API

                ①、length:获取字符串的长度(字符串中字符的个数) 属性,没有小括号

                ②、toUpperCase/toLowerCase :转大小写

                ③、charAt(下标) : 返回某个下标上的字符

                ④、indexof(字符):查找字符串中字符出现的首次下标

                ⑤、lastIndexof(字符):查找字符串中字符最后一次出现的下标

                ⑥、substring(开始,结束):截取字符串中一部分(结束是不包含的)

                ⑦、replace(旧的,新的):将字符串中的旧字符替换成新字符

                ⑧、split(分割的节点):一个字符串切割成N个小字符串,所以返回的是数组类型

        7、数组

                ①、创建数组

var arr1 = new Array();

                ②、数组的初始化

// 第一种
var arr1 = new Array();
arr1[0] = 110;
arr1[1] = 119;
arr1[2] = 120;
// 第二种
var arr1 = new Array(10,"a",true);
// 第三种
var arr1 = [10,"a",true];
for (var i = 0; i < arr1.length; i++) {
console.log(arr1[i]);
}

                ③、数组的常用方法

                        tostring():将数组转换成字符串

                        join(连接符号):将数组中的每个元素用连接符号连接成一个新的字符串。

                        concat(新元素):将原来的数组连接新元素,原数组不变。

                        slice(开始,结束):在数组中提取一部分,形成新的数组。

                        reverse():数组的反转(倒序)

                        sort():数组排序

        8、Math数学对象

                ①、概念:Math 对象用于执行数学任务 没有构造函数 Math() 无需创建,直接把 Math 作为对象使用就可以调用其所有属性和方法。

                ②、常用方法:

         9、函数

                ①、语法

function 函数名( 形参列表 ){
// 函数体
return 返回值;
}

        函数声明后不会立即执行,会在我们需要的时候调用到。 注意: 形参:一定不要带数据类型 分号是用来分隔可执行JavaScript语句。 由于函数声明不是一个可执行语句,所以不以分号 结束。

                ②、参数对象

        在函数内部,调用参数列表的属性

function func(a,b,c){
console.log( arguments.length ); // 获得参数的个数
console.log( arguments[1] ); // 获得下标为1的参数
}

                ③、构造函数

        函数同样可以通过内置的 JavaScript 函数构造器(Function())定义

var myFunction = new Function("a", "b", "return a * b");
var x = myFunction(4, 3);
console.log(x);

                ④、匿名函数

var fn = function(a, b) {// 没有名字的函数,应该用一个变量来接收
return a * 10 + b;
};
console.log( fn(3, 4) );

                ⑤、全局函数

                        isNaN:检查其参数是否是非数字值

                        eval:用来转换字符串中的运算

                        encodeURI 与 decodeURI

        10、闭包

                ①、闭包的概念:指有权访问另一个函数作用域中的变量的函数,一般情况就是在一个函数中包含另一 个函数。

                ②、闭包的作用:访问函数内部变量、保持函数在环境中一直存在,不会被垃圾回收机制处理; 简单地说:就是在函数的局部范围内声明一个封闭的环境,此环境不会被垃圾回收探测到。保证了数据 的安全唯一性 想了解闭包,首先要了解什么是全局变量,什么是局部变量

function test1(){
    var count = 0; //局部变量
    function jia(){
    return count+=1;
    }
    return jia;
    }
    var fn = test1(); // fn => function jia(){return count+=1; }
    fn();
    fn();
    console.log( fn() ); // 每次调用方法,首先就是将变量还原为0

                ③、优缺点

                        优点:方便调用上下文中声明的局部变量 逻辑紧密,可以在一个函数中再创建个函数,避 免了传参的问题

                        缺点:因为使用闭包,可以使函数在执行完后不被销毁,保留在内存中,如果大量使用闭 包就会造 成内存泄露,内存消耗很大。

        11、弹框输出:普通弹框 alert("hello,拉勾");

                                控制台日志输出 console.log("谷歌浏览器按F12进入控制台");

                                页面输出 document.write("<h2>我爱你中国<h2/>"); 将元素输出到body中;

                                确认框 confirm("确定删除吗?");

                                输入框 prompt("请输入姓名:");

var name = prompt("请输入你的名字:");
document.write( "<h1>大名:"+name+"!</h1>" );

三、DOM

        1、DOM访问:

                ①、getElementById:通过id属性获得元素节点对象

                ②、getElementsByName:通过name属性获得元素节点对象集

                ③、getElementsByTagName:通过标签名称获得元素节点对象集

        2、DOM修改

                ①、改变HTML内容:

<body>
<button onclick="test()">点我试试</button>
<script>
function test(){
document.getElementById("hello").innerHTML = "走哇,喝点去~!";
}
</script>
<h2 id="hello">你好!</h2>
</body>

                ②、改变HTML样式:

<body>
<button onclick="chou()">你瞅啥</button>
<script>
function chou(){
document.getElementById("hello").style.color = "red";
document.getElementById("hello").style.fontFamily = "华文彩云";
}
</script>
<h2 id="hello">你好!</h2>
</body>

                ③、在HTML中添加元素

<body>
<button onclick="add()">添加</button>
<div></div>
<script>
function add(){
var img = document.createElement("img"); // <img>
img.setAttribute("src","../lagou-html/img/cat.gif"); // <img
src="../lagou-html/img/cat.gif">
img.setAttribute("title","小猫咪"); // <img src="../lagouhtml/img/cat.gif" title="小猫咪">
img.setAttribute("id","cat"); // <img src="../lagouhtml/img/cat.gif" title="小猫咪" id="cat">
var divs = document.getElementsByTagName("div");
divs[0].appendChild(img);
}
</script>
</body>

                ④、删除节点

<body>

<button onclick="del()">删除</button>
<div>
</div>
<script>
function del(){
var img = document.getElementById("cat");
img.parentNode.removeChild(img); // 必须通过父节点,才能删除子节点

                ⑤、替换节点

<body>
<button onclick="rep()">替换</button>
<div>
</div>
<script>
function rep(){
var imgold = document.getElementById("cat");
// 通过修改元素的属性,做的替换
// img.setAttribute("src","../lagou-html/img/2.jpg");
var imgnew = document.createElement("img");
imgnew.setAttribute("src","../lagou-html/img/1.jpg");
imgold.parentNode.replaceChild( imgnew, imgold );
}
</script>
</body>

四、事件

        1、窗口事件

                onload :当文档被载入时执行脚本(仅在 body 和 frameset 元素中有效。)

<body onload="test()">
<script>
function test() {
document.write("哈哈哈哈");
}
</script>
</body>

        2、表单元素事件(仅在表单元素中有效。)

                onblur 当元素失去焦点时执行脚本

                onfocus 当元素获得焦点时执行脚本

<body>
<script>
function a() {
console.log("获得焦点==被激活");
}
function b() {
console.log("失去焦点");
}
</script>
<form action="">
<p>帐号:<input onfocus="a()" onblur="b()" /></p>
<p>密码:<input /></p>
</form>
</body>

        3、鼠标事件

                onclick 当鼠标被单击时执行脚本

                ondblclick 当鼠标被双击时执行脚本

                onmouseout 当鼠标指针移出某元素时执行脚本

                onmouseover 当鼠标指针悬停于某元素之上时执行脚本

        4、键盘事件

                onkeydown 按下去

                 onkeyup 弹上来

<script>
window.onkeydown = function(){
// event:事件源(按键)
// console.log( "按键编码:"+event.keyCode );
if(event.keyCode == "13"){ // 回车键
alert("登录成功!");
}
}
window.onkeyup = function(){
console.log(event.keyCode); // 按住按键不松手是不会触发的。当松手时,按键回弹则
触发
}
</script>

五、面向对象

        1、使用object创建通用对象

var user = new Object();
user.name = "吕布";
user.age = 21;
user.say = function(){
console.log("大家好,我叫:"+this.name+",我今年"+this.age+"岁了!");
}
user.say();
var dog = new Object();
dog.nickname = "屎尿多";
dog.wang = function(){
console.log("我饿了,我要拆家了!");
}
dog.wang();

        2、使用构造函数

function userinfo(name , age){
this.name = name;
this.age = age;
this.say = function(){
console.log("大家好,我叫:"+this.name+",我今年"+this.age+"岁了!");
}
}
var user = new userinfo("詹姆斯",35);
user.say();

        3、使用直接量

var user = {
username : "孙悟空",
age : 527,
say : function(){
console.log("大家好,我叫:"+this.username+",我今年"+this.age+"岁了!");
}
};
user.say();

六、JSON

        1、概念大家在互联网上来回传递数据,如果没有一个统一的格式,解析起来的难度很大(每个人的编码喜 好不一样) JSON(JavaScript Object Notation) 是一种轻量级的数据交换格式。 易于人阅读和编写,同时也易于机器解析和生成 。

        2、语法:{

                        属性1:值1,

                         属性2:值2,

                         。。。。 }

        3、演示

<script>
var json1 = { username: "吕布", age: 31 };
console.log("姓名:" + json1.username + ",年龄:" + json1.age + "岁");
// json数组
var josnarr = [{ name: "貂蝉", age: 18 }, { name: "小乔", age: 17 }];
console.log("貂蝉" + josnarr[0].age + "岁了");
console.log("小乔" + josnarr[1].age + "岁了");
// 复杂的json对象
var long = {
name: "赵云",
sex: "男",
hobby: ["玉兰白龙驹", "龙胆亮银枪", "青釭剑"]
};
console.log(long.name + "的主攻武器:" + long.hobby[1]);
</script>

七、BOM

        1、window对象

                窗口特征:

<button onclick="kai()">极速入职</button>
<script>
function kai(){
window.open("http://lagou.com" , "拉勾网" ,
"width=500,height=300,left=400");
// window.open("http://lagou.com" , "拉勾网" , "fullscreen=yes"); // IE才
生效
}
</script>

        2、screen屏幕对象

                得到分辨率:

<body>
<button onclick="kai()">求大小</button>
</body>
<script>
function kai() {
alert(window.screen.width + "|" + window.screen.height);
}
</script>

        3、location定位

<button onclick="test()">测试</button>
<script>
function test(){
console.log( "当前页面的URL路径地址:"+ location.href );
location.reload(); // 重新加载当前页面(刷新)
location.href = "http://lagou.com"; // 跳转页面
}
</script>

        4、history浏览器历史

                history对象会记录浏览器的痕迹

                a.html

<a href="b.html">去b页面</a>

                b.html

<button onclick="hui()">返回</button>
<script>
function hui(){
//history.go(-1); //上一级页面
history.back(); // 与go(-1)是等价的
}
</script>

        5、navigator 导航

        window.navigator 对象包含有关访问者浏览器的信息;

<script>
var str = "";
str += "<p>浏览器的代号:"+ navigator.appCodeName +"</p>";
str += "<p>浏览器的名称:"+ navigator.appName+"</p>";
str += "<p>浏览器的版本:"+ navigator.appVersion+"</p>";
str += "<p>硬件平台:"+ navigator.platform+"</p>";
str += "<p>用户代理:"+ navigator.userAgent +"</p>";
str += "<p>启用Cookies:"+navigator.cookieEnabled+"</p>";
document.write(str);
</script>

        6、存储对象

                ①、本地存储 localStorage( 在关闭窗口或标签页之后将会删除这些数据)

                        保存数据

localStorage.setItem("name","curry")

                       提取数据

localStorage.getItem("name");

                        删除数据

localStorage.removeItem("name");
// 三种方式保存数据
localStorage["a"] = 1;
localStorage.b = 2;
localStorage.setItem("c",3);
// 查看数据类型
console.log( typeof localStorage["a"] )
console.log( typeof localStorage["b"] )
console.log( typeof localStorage["c"] )
// 第一种方式读取
var a = localStorage.a;
console.log(a);
// 第二种方式读取
var b = localStorage["b"];
console.log(b);
// 第三种方式读取
var c = localStorage.getItem("c");
console.log(c);

                ②、会话存储

                        会话,就是保持浏览器别关闭。 关闭浏览就等于结束了一次会话。 开启浏览器就意味着创建了一次会话。

                        保存数据

sessionStorage.setItem("name", "klay");

                        提取数据

var lastname = sessionStorage.getItem("name");

                        删除指定键的数据

sessionStorage.removeItem("name");
<button onclick="dian()">点我</button>
<h3 id="result"></h3>
<script>
function dian(){
if( sessionStorage.getItem("clickCount") ){
sessionStorage.setItem("clickCount",
Number(sessionStorage.getItem("clickCount")) + 1);
}else{
sessionStorage.setItem("clickCount", 1);
}
document.getElementById("result").innerHTML = "已经点击了"+
sessionStorage.getItem("clickCount") +"次!"
}
</script>

八、计时操作

        1、周期性定时器 setInterval

                setInterval(1,2):周期性触发代码exp (常用)

<h1 id="title"></h1>
<script>
var colors = ["red","blue","yellow","pink","orange","black"];
var i = 0;
function bian(){
document.getElementById("title").style.color = colors[i++];
if(i == colors.length){
i = 0; // 颜色重新开始
}
}
function time(){
var d = new Date();
var str = d.getFullYear()+"年"+(d.getMonth()+1)+"月"+d.getDate()+"号
"+d.getHours()+"点"+d.getMinutes()+"分"+d.getSeconds()+"秒";
document.getElementById("title").innerHTML = str;
}
setInterval(bian,100); // 每隔1秒,执行一次变色函数bian
setInterval(time,1000); // 每隔1秒,执行一次时间函数time
</script>
</body>
>

        2、停止定时器 clearInterval

        

<body>
<img id="tu" src="../lagou-html/img/1.jpg" width="50%" />
<br />
<button onclick="begin()">开始</button>
<button onclick="stop()">停止</button>
<script>
var arr = ["1.jpg", "2.jpg", "3.jpg", "4.jpg", "5.jpg"];
function begin() {
timer = setInterval(bian, 100); // 没有使用var,所以timer是全局变量
}
function stop() {
clearInterval(timer); // 停止定时器
}
function bian() {
var i = Math.floor(Math.random() * arr.length); // 0-4
document.getElementById("tu").src = "../lagou-html/img/" + arr[i];
}
</script>
</body>

        3、一次性定时器 setTimeout

                相当于延迟的效果,只执行一次

<script>
function bian(){
document.body.style.backgroundColor = "red";
}
//3秒之后调用
setTimeout(bian,3000);
</script>

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值