javascript 简介
Posted 大伦
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了javascript 简介相关的知识,希望对你有一定的参考价值。
一、JavaScript嵌入页面的方式
1、行间事件(主要用于事件)
<input type="button" name="" onclick="alert(‘ok!‘);">
2、页面script标签嵌入
<script type="text/javascript">
var a = ‘你好!‘;
alert(a);
</script>
3、外部引入
<script type="text/javascript" src="js/index.js"></script>
二、注释与变量:
1、单行注释://
2、多行注释:/* */
3、变量:
#弱类型语言,类型由值来决定
var a = 123,b = ‘abc‘;
#变量类型:
number、string、boolean、undefined(定义了变量,没赋值)、null
复合类型:object
三、获取元素与操作元素:
1、属性中的‘-‘不出现在script写法中,用驼峰式代替。
2、特殊:操作class属性时,要用className。
3、通过[]方式可以写变量。
4、通过innerhtml可以读写元素包裹的内容。
#demo1:操作元素
<!DOCTYPE html>
<html lang="zh-CN">
<head>
<meta charset="UTF-8">
<title>操作元素</title>
<script type=‘text/javascript‘>
window.onload = function(){
document.getElementById(‘div1‘).title = ‘what a nice day‘;
var oDiv = document.getElementById(‘div1‘);
oDiv.style.color = ‘red‘;
oDiv.style.fontSize = ‘30px‘;
var attr = ‘background‘;
oDiv[‘style‘][attr] = ‘gold‘;
alert(oDiv.innerHTML);
}
</script>
</head>
<body>
<input type=‘button‘ name=‘‘ value=‘tank‘ onclick="alert(‘hello!‘)">
<div id=‘div1‘ title=‘what a fuking day!‘>这是一个元素</div>
</body>
</html>
#demo2换肤
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>换肤</title>
<style type=‘text/css‘>
. box1{
width:200px;
height:200px;
background-color:gold;
}
.box2{
width:200px;
height:200px;
background-color:red;
}
</style>
<script type=‘text/javascript‘>
window.onload = function(){
document.getElementById(‘btn01‘).onclick = skin01;
document.getElementById(‘btn02‘).onclick = skin02;
}
function skin01(){
document.getElementById(‘link‘).className = ‘box1‘;
}
function skin02(){
document.getElementById(‘link‘).className = ‘box2‘;
}
</script>
</head>
<body>
<input type=‘button‘ name=‘‘ value=‘皮肤1‘ id=‘btn01‘ >
<input type=‘button‘ name=‘‘ value=‘皮肤2‘ id=‘btn02‘ >
<div class=‘box1‘id=‘link‘></div>
</body>
</html>
四、匿名函数
#伪代码
window.onload = function(){
var oDiv = document.getElementById(‘div1‘);
/*oDiv.onclick = myalert;
function myalert(){
alert(‘ok‘);
}
*/
oDiv.onclick = function(){
alert(‘ok‘);
}
}
<body>
<div id=‘div1‘>标签</div>
</body>
五、switch 多重判断语句,case后面是变量的值。
var today = 2;
switch (today){
case 1:
alert(‘数学‘);
break;
case 2:
alert(‘语文‘);
break;
case 3:
alert(‘外语‘);
break;
default:
alert(‘不补习‘);
}
六、数组
建议使用第二种创建方式
var aRr1 = new Array(1,2,3);
var aRr2 = [‘a‘,‘b‘,‘c‘];
1、join
var sTr = aRr2.join(‘-‘);
2、增加/删除元素,push/pop 用法一致
#这里是从前面增/删
aRr2.unshift(0);
aRr2.shift();
3、反转数组
aRr2.reverse();
4、splice 同时增加删除元素
#括号里分别是从第几个元素开始、删几个、添加的元素。
aRr2.splice(2,1,6,7,8);
5、通过标签获取元素
document.getElementsByTagName(‘元素名‘);
6、for 循环
for(i=0;i<n;i++){}
7、数组去重:
var aRr = [1,3,5,7,3,3,2,6,45,2,6,3,2];
var aRr2 = [];
for(var i=0;i<aRr.length;i++){
if (aRr.indexof(aRr[i]) == i){
aRr2.push(aRr[i]);
}
}
七、Javascript组成
1、ECMAscript javascript的语法(变量、函数、循环语句等语法)
2、DOM 文档对象模型 操作html和css的方法
3、BOM 浏览器对象模型 操作浏览器的一些方法
八、字符串处理方法
1、字符串合并操作:“ + ”
2、parseInt() 将数字字符串转化为整数
3、parseFloat() 将数字字符串转化为小数
#小数计算bug,会导致结果不准:
var a = 0.1;
var b = 0.2;
alert(parseFloat(a) + parseFloat(b));
#解决方法:
alert((parseFloat(a)*100 + parseFloat(b)*100)/100);
4、split() 把一个字符串分隔成字符串组成的数组
5、charAt() 获取字符串中的某一个字符
6、indexOf() 查找字符串是否含有某字符,没找到返回-1
7、substring() 截取字符串 用法: substring(start,end)(不包括end)
8、toUpperCase() 字符串转大写
9、toLowerCase() 字符串转小写
10、字符串反转:
var sTr = ‘12435235dxcfzxcvom45634‘;
var sTr2 = sTr.split(‘‘).reverse().join(‘‘);
九、调试程序的方法
1、alert
2、console.log
3、document.title
#parseInt 和 parseFloat不能正确判断NaN,可以用isNaN
#demo:计算器
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>计算器</title>
<script>
window.onload = function(){
var oInput1 = document.getElementById(‘input01‘);
var oInput2 = document.getElementById(‘input02‘);
var oBtn = document.getElementById(‘btn‘);
var oSel = document.getElementById(‘sel‘);
oBtn.onclick = function(){
var num1 = oInput1.value;
var num2 = oInput2.value;
var cal = sel.value;
if(num1==‘‘ || num2==‘‘){
alert(‘输入框不能为空‘);
return;
}
if(isNaN(num1) || isNaN(num2)){
alert(‘只能输入数字!‘);
return;
}
switch(cal){
case ‘+‘:
alert((parseFloat(num1)*100+parseFloat(num2)*100)/100);
break;
case ‘-‘:
alert((parseFloat(num1)*100-parseFloat(num2)*100)/100);
break;
case ‘*‘:
alert(((parseFloat(num1)*100)*(parseFloat(num2)*100))/10000);
break;
case ‘/‘:
alert((parseFloat(num1)*100)/(parseFloat(num2)*100));
break;
}
}
}
</script>
</head>
<body>
<input type=‘text‘ name=‘‘ id=‘input01‘>
<select id=‘sel‘>
<option>+</option>
<option>-</option>
<option>*</option>
<option>/</option>
</select>
<input type=‘text‘ name=‘‘ id=‘input02‘>
<input type=‘button‘ name=‘‘ value=‘计算‘ id=‘btn‘>
</body>
</html>
十、定时器
1、demo定时弹框伪代码
<script>
window.onload = function(){
var oPop = document.getElementById(‘pop‘);
var oShut = document.getElementById(‘shut‘);
function showpop(){
oPop.style.display = ‘block‘;
}
setTimeout(showpop,3000);
oShut.onclick = function(){
oPop.style.display = ‘none‘;
}
}
</script>
2、关闭定时器:
var timer = setTimeout(function(){alert(‘hello‘);},3000);
clearTimeout(timer);
3、反复定时器:
var timer2 = setInterval(function(){alert(‘hi‘);},2000);
4、demo倒计时伪代码:
<script type="text/javascript">
window.onload = function(){
var oDiv = document.getElementById(‘div1‘);
function timeleft(){
var now = new Date();
var future = new Date(2020,1,1,0,0,0);
var lefts = parseInt((future-now)/1000);
var day = parseInt(lefts/86400);
var hour = parseInt(lefts%86400/3600);
var min = parseInt(lefts%86400%3600/60);
var sec = lefts%60;
str = ‘距离2020年1月1日0点还剩下‘+day+‘天‘+hour+‘时‘+min+‘分‘+sec+‘秒‘;
oDiv.innerHTML = str;
}
timeleft();
setInterval(timeleft,1000);
}
</script>
......
<div id="div1"></div>
十一、封闭函数与闭包
1、封闭函数
(function(){
var oDiv = document.getElementById(‘div1‘);
oDiv.style.color = ‘red‘;
})();
#还可以在函数定义前加上“~”和“!”等符号来定义匿名函数
!function(){
var oDiv = document.getElementById(‘div1‘);
oDiv.style.color = ‘red‘;
}()
2、闭包:
函数嵌套函数,内部函数可以引用外部函数的参数和变量,参数和变量不会被垃圾回收机制收回
#闭包用处
2-1、将一个变量长期驻扎在内存当中,可用于循环中存索引值
<script type="text/javascript">
window.onload = function(){
var aLi = document.getElementsByTagName(‘li‘);
for(var i=0;i<aLi.length;i++)
{
(function(i){
aLi[i].onclick = function(){
alert(i);
}
})(i);
}
}
</script>
......
<ul>
<li>111</li>
<li>222</li>
<li>333</li>
</ul>
2-2、私有变量计数器,外部无法访问,避免全局变量的污染
<script type="text/javascript">
var count = (function(){
var a = 0;
function add(){
a++;
return a;
}
return add;
})()
count();
count();
var nowcount = count();
alert(nowcount);
</script>
十二、内置对象:
1、document
document.referrer //获取上一个跳转页面的地址(需要服务器环境)
2、location
window.location.href //获取或者重定url地址
window.location.search //获取地址参数部分
window.location.hash //获取页面锚点或者叫哈希值
3、Math
Math.random 获取0-1的随机数
Math.floor 向下取整
Math.ceil 向上取整
demo随机取10个 10到20 的整数
<script>
var a = 10;
var b = 20;
var arr = [];
for(var i=0;i<10;i++){
var num = Math.floor(Math.random()*(b-a+1)+a);
arr.push(num);
}
alert(arr);
</script>
十三、面向对象设计
1、单体
<script type="text/javascript">
var Tom = {
name : ‘tom‘,
age : 18,
showname : function(){
alert(‘我的名字叫‘+this.name);
},
showage : function(){
alert(‘我今年‘+this.age+‘岁‘);
}
}
</script>
2、工厂模式
<script type="text/javascript">
function Person(name,age,job){
var o = new Object();
o.name = name;
o.age = age;
o.job = job;
o.showname = function(){
alert(‘我的名字叫‘+this.name);
};
o.showage = function(){
alert(‘我今年‘+this.age+‘岁‘);
};
o.showjob = function(){
alert(‘我的工作是‘+this.job);
};
return o;
}
var tom = Person(‘tom‘,18,‘程序员‘);
tom.showname();
</script>
3、构造函数
<script type="text/javascript">
function Person(name,age,job){
this.name = name;
this.age = age;
this.job = job;
this.showname = function(){
alert(‘我的名字叫‘+this.name);
};
this.showage = function(){
alert(‘我今年‘+this.age+‘岁‘);
};
this.showjob = function(){
alert(‘我的工作是‘+this.job);
};
}
var tom = new Person(‘tom‘,18,‘程序员‘);
var jack = new Person(‘jack‘,19,‘销售‘);
alert(tom.showjob==jack.showjob);
</script>
4、原型模式,实现对象公用同一个方法
<script type="text/javascript">
function Person(name,age,job){
this.name = name;
this.age = age;
this.job = job;
}
Person.prototype.showname = function(){
alert(‘我的名字叫‘+this.name);
};
Person.prototype.showage = function(){
alert(‘我今年‘+this.age+‘岁‘);
};
Person.prototype.showjob = function(){
alert(‘我的工作是‘+this.job);
};
var tom = new Person(‘tom‘,18,‘程序员‘);
var jack = new Person(‘jack‘,19,‘销售‘);
alert(tom.showjob==jack.showjob);
</script>
5、继承
#call 和 apply:可以改变this的指向,用来继承属性。
#方法继承:将父类的一个实例赋值给子类的原型属性。
<script type="text/javascript">
function fclass(name,age){
this.name = name;
this.age = age;
}
fclass.prototype.showname = function(){
alert(this.name);
}
fclass.prototype.showage = function(){
alert(this.age);
}
function sclass(name,age,job)
{
fclass.call(this,name,age);
this.job = job;
}
sclass.prototype = new fclass();
sclass.prototype.showjob = function(){
alert(this.job);
}
var tom = new sclass(‘tom‘,19,‘全栈工程师‘);
tom.showname();
tom.showage();
tom.showjob();
</script>
以上是关于javascript 简介的主要内容,如果未能解决你的问题,请参考以下文章