javascript入门和进阶
JavaScript介绍
JavaScript是运行在浏览器端的脚步语言,JavaScript主要解决的是前端与用户交互的问题,包括使用交互与数据交互,JavaScript是浏览器解释执行的。
前端三大块
1、HTML:页面结构
2、CSS:页面表现:元素大小、颜色、位置、隐藏或显示、部分动画效果
3、JavaScript:页面行为:部分动画效果、页面与用户的交互、页面功能
JavaScript嵌入页面的方式
1、行间事件(主要用于事件)
<input type="button" name="" onclick="alert('ok!');">
2、页面script标签嵌入
<script type="text/javascript">
alert('ok!');
</script>
3、外部引入
<script type="text/javascript" src="js/index.js"></script>
变量、数据类型及基本语法规范
JavaScript 是一种弱类型语言,javascript的变量类型由它的值来决定。 定义变量需要用关键字 'var'
var iNum = 123;
var sTr = 'asd';
//同时定义多个变量可以用","隔开,公用一个‘var’关键字
var iNum = 45,sTr='qwe',sCount='68';
变量类型
5种基本数据类型:
1、number 数字类型
2、string 字符串类型
3、boolean 布尔类型 true 或 false
4、undefined undefined类型,变量声明未初始化,它的值就是undefined
5、null null类型,表示空对象,如果定义的变量将来准备保存对象,可以将变量初始化为null,在页面上获取不到对象,返回的值就是null
1种复合类型:
object
javascript语句与注释
1、javascript语句开始可缩进也可不缩进,缩进是为了方便代码阅读,一条javascript语句应该以“;”结尾;
<script type="text/javascript">
var iNum = 123;
var sTr = 'abc123';
function fnAlert(){
alert(sTr);
};
fnAlert();
</script>
2、javascript注释
<script type="text/javascript">
// 单行注释
var iNum = 123;
/*
多行注释
1、...
2、...
*/
var sTr = 'abc123';
</script>
变量、函数、属性、函数参数命名规范
1、区分大小写
2、第一个字符必须是字母、下划线(_)或者美元符号($)
3、其他字符可以是字母、下划线、美元符或数字
匈牙利命名风格:
对象o Object 比如:oDiv
数组a Array 比如:aItems
字符串s String 比如:sUserName
整数i Integer 比如:iItemCount
布尔值b Boolean 比如:bIsComplete
浮点数f Float 比如:fPrice
函数fn Function 比如:fnHandler
正则表达式re RegExp 比如:reEmailCheck
函数
函数就是重复执行的代码片。
函数定义与执行
<script type="text/javascript">
// 函数定义
function fnAlert(){
alert('hello!');
}
// 函数执行
fnAlert();
</script>
变量与函数预解析
JavaScript解析过程分为两个阶段,先是编译阶段,然后执行阶段,在编译阶段会将function定义的函数提前,并且将var定义的变量声明提前,将它赋值为undefined。
<script type="text/javascript">
fnAlert(); // 弹出 hello!
alert(iNum); // 弹出 undefined
function fnAlert(){
alert('hello!');
}
var iNum = 123;
</script>
函数传参 javascript的函数中可以传递参数。
<script type="text/javascript">
function fnAlert(a){
alert(a);
}
fnAlert(12345);
</script>
函数'return'关键字
函数中'return'关键字的作用:
1、返回函数中的值或者对象
2、结束函数的运行
<script type="text/javascript"> function fnAdd(iNum01,iNum02){ var iRs = iNum01 + iNum02; return iRs; alert('here!'); } var iCount = fnAdd(3,4); alert(iCount); //弹出7 </script>
条件语句
通过条件来控制程序的走向,就需要用到条件语句。
条件运算符
==、===、>、>=、<、<=、!=、&&(而且)、||(或者)、!(否)
if else
var iNum01 = 3;
var iNum02 = 5;
var sTr;
if(iNum01>iNum02){
sTr = '大于';
}
else
{
sTr = '小于';
}
alert(sTr);
多重if else语句
var iNow = 1; if(iNow==1) { ... ; } else if(iNow==2) { ... ; } else { ... ; }
获取元素方法
可以使用内置对象document上的getElementById方法来获取页面上设置了id属性的元素,获取到的是一个html对象,然后将它赋值给一个变量,比如:
<script type="text/javascript">
var oDiv = document.getElementById('div1');
</script>
....
<div id="div1">这是一个div元素</div>
上面的语句,如果把javascript写在元素的上面,就会出错,因为页面上从上往下加载执行的,javascript去页面上获取元素div1的时候,元素div1还没有加载,解决方法有两种:
第一种方法:将javascript放到页面最下边
....
<div id="div1">这是一个div元素</div>
....
<script type="text/javascript">
var oDiv = document.getElementById('div1');
</script>
</body>
第二种方法:将javascript语句放到window.onload触发的函数里面,获取元素的语句会在页面加载完后才执行,就不会出错了。
<script type="text/javascript"> window.onload = function(){ var oDiv = document.getElementById('div1'); } </script> .... <div id="div1">这是一个div元素</div>
操作元素属性
获取的页面元素,就可以对页面元素的属性进行操作,属性的操作包括属性的读和写。
操作元素属性
var 变量 = 元素.属性名 读取属性
元素.属性名 = 新属性值 改写属性
属性名在js中的写法
1、html的属性和js里面属性写法一样
2、“class” 属性写成 “className”
3、“style” 属性里面的属性,有横杠的改成驼峰式,比如:“font-size”,改成”style.fontSize”
<script type="text/javascript">
window.onload = function(){
var oInput = document.getElementById('input1');
var oA = document.getElementById('link1');
// 读取属性值
var sValue = oInput.value;
var sType = oInput.type;
var sName = oInput.name;
var sLinks = oA.href;
// 写(设置)属性
oA.style.color = 'red';
oA.style.fontSize = sValue;
}
</script>
......
<input type="text" name="setsize" id="input1" value="20px">
<a href="http://www.itcast.cn" id="link1">传智播客</a>
innerHTML
innerHTML可以读取或者写入标签包裹的内容
<script type="text/javascript"> window.onload = function(){ var oDiv = document.getElementById('div1'); //读取 var sTxt = oDiv.innerHTML; alert(sTxt); //写入 oDiv.innerHTML = '<a href="http://www.itcast.cn">传智播客<a/>'; } </script> ...... <div id="div1">这是一个div元素</div>
事件属性及匿名函数
事件属性
元素上除了有样式,id等属性外,还有事件属性,常用的事件属性有鼠标点击事件属性(onclick),鼠标移入事件属性(mouseover),鼠标移出事件属性(mouseout),将函数名称赋值给元素事件属性,可以将事件和函数关联起来。
<script type="text/javascript">
window.onload = function(){
var oBtn = document.getElementById('btn1');
oBtn.onclick = myalert;
function myalert(){
alert('ok!');
}
}
</script>
匿名函数
定义的函数可以不给名称,这个叫做匿名函数,可以将匿名函数的定义直接赋值给元素的事件属性来完成事件和函数的关联,这样可以减少函数命名,并且简化代码。函数如果做公共函数,就可以写成匿名函数的形式。
<script type="text/javascript"> window.onload = function(){ var oBtn = document.getElementById('btn1'); /* oBtn.onclick = myalert; function myalert(){ alert('ok!'); } */ // 直接将匿名函数赋值给绑定的事件 oBtn.onclick = function (){ alert('ok!'); } } </script>
综合实例
1、网页换肤
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <meta http-equiv="X-UA-Compatible" content="ie=edge"> <title>Document</title> <link rel="stylesheet" href="./css/skin03.css" id="link01"> <script> window.onload=function(){ var sLink=document.getElementById("link01"); var sBtn1=document.getElementById("btn01"); var sBtn2=document.getElementById("btn02"); sBtn1.onclick=function(){ sLink.href="./css/skin03.css"; }; sBtn2.onclick=function(){ sLink.href="./css/skin04.css"; }; } </script> </head> <body> <h1>hello javascript!</h1> <input type="button" value="点我啊" id="btn01" class="b1"> <input type="button" value="不要点" id="btn02" class="b2"> </body> </html>
2、打印名片
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <meta http-equiv="X-UA-Compatible" content="ie=edge"> <title>Document</title> <link rel="stylesheet" type="text/css" href="css/main02.css"> <script> window.onload = function(){ // 获取元素的对象 var oInput01=document.getElementById("input01"), oInput02=document.getElementById("input02"), oInput03=document.getElementById("input03"), oInput04=document.getElementById("input04"), oInput05=document.getElementById("input05"), oInput06=document.getElementById("input06"), oInput07=document.getElementById("input07"), oBtn01=document.getElementById("setcard"), ocard_wrap=document.getElementById("card_wrap"); // 获取输入框的内容 oBtn01.onclick = function(){ var sVal01 = oInput01.value, sVal02 = oInput02.value, sVal03 = oInput03.value, sVal04 = oInput04.value, sVal05 = oInput05.value, sVal06 = oInput06.value, sVal07 = oInput07.value; // 判断输入框的内容是否为空 if(sVal01==""||sVal02==""||sVal03==""||sVal04==""||sVal05==""||sVal06==""){ alert("please ensure all information input correctly!"); // 结束函数 return; } // 拼接输入内容和模板 var sTr='<div class="p01">'+sVal01+'<em>'+sVal02+'</em></div>' +'<div class="p02">' +'<p class="company">'+sVal03+'</p>' +'<p>手机:'+sVal04+'</p>' +'<p>email:'+sVal05+'</p>' +'<p>地址:'+sVal06+'</p>'+'</div>'; // 替换内容到模板 ocard_wrap.innerHTML = sTr; // 选择背景图片 if(sVal07==0){ ocard_wrap.className="idcard01"; } else if(sVal07==1){ ocard_wrap.className="idcard02" } else{ ocard_wrap.className="idcard03" } } } </script> </head> <body> <div class="set_con"> <div class="left_set"> <label>姓名:</label> <input type="text" id="input01"> <label>职位:</label> <input type="text" id="input02"> <label>公司名称:</label> <input type="text" id="input03"> <label>手机:</label> <input type="text" id="input04"> <label>email:</label> <input type="text" id="input05"> <label>地址:</label> <input type="text" id="input06"> <label>风格:</label> <select id="input07"> <option value="0">风格一</option> <option value="1">风格二</option> <option value="2">风格三</option> </select> <input type="button" value="设 置" class="setbtn" id="setcard"> </div> <div class="right_show"> <div class="idcard01" id="card_wrap"> <div class="p01">张大山<em>产品经理</em></div> <div class="p02"> <p class="company">银河科技信息技术有限公司</p> <p>手机:1808888888</p> <p>email:dasan@126.com</p> <p>地址:中关村银河大厦B座2603</p> </div> </div> </div> </div> </body> </html>