JavaScript基础精讲
---------------------------------------------------------------------------------------------------------------
[版权申明:本文系作者原创,转载请注明出处]
文章出处:http://blog.csdn.net/sdksdk0/article/details/51596213
作者:朱培
---------------------------------------------------------------------------------------------------------------
本文主要从javascript简介开始,分享Js语法、JS函数、BOM编程和DOM编程的相关知识。
一、JS简介
1.1 简介
JavaScript一种直译式脚本语言,是一种动态类型、弱类型、基于原型的语言,内置支持类型。它的解释器被称为JavaScript引擎,为浏览器的一部分,广泛用于客户端的脚本语言,最早是在HTML(标准通用标记语言下的一个应用)网页上使用,用来给HTML网页增加动态功能。
1.2 组成部分
核心(ECMAScript) :数据类型、语句、声明等;核心对象
文档对象模型(DOM) :Document Object Model(XML DOM和HTML DOM)
浏览器对象模型(BOM):BrowserObject Model(核心对象:window、location等)
1.3 编写方式
直接通过事件调用:
onClick="alert('hello');"
内部编写方式:
<script type="text/javascript" >
alert("hello good mi");
</script>
外部方式:
<script type="text/javascript" src="1.js" ></script>
二、JS语法
2.1 基本语法
js的语法很多都与java差不多,但是又有所不同,值得一提的就是java和javascript是完全不同的两个概念,就像雷锋和雷锋塔一样。下面来看看常用的一些变量和数据类型。
·var 合法的变量名;
变量名不能使用关键字。多个变量可以用逗号分隔。
·运算符号与Java中相同
· if(表达式){}
else{}
· for(初始化;条件;增量或减量){}
·while(条件){}
·switch(表达式)
{case 常量值1:JavaScript语句;
case 常量值2:JavaScript语句;
default:JavaScript语句;}
•类型:number/null/boolean/string/object/undefinde
•类型转换:掌握parseFloat()和parseInt()函数。
•重点定义函数:function 函数名(参数列表){}
注:也可以没有参数
调用函数:事件名="函数名()"
获取表单数据:document.表单名.表单元素名.value
示例:
<script type="text/javascript" > var v2="abc";
alert(typeof v2);
var v3=100;
alert(typeof v3); //number类型
var v5=new Date();
alert(typeof v5); //object类型 </script>
2.2 数据类型
- 变量、函数、运算符区分大小写。
- 变量是弱类型的,var a=10;
- 注释://和/* */
- 5种原始数据类型:Underfined、Null、Boolean、Number、String
JavaScript中的基本数据类型有数字型、字符串型和布尔值三种,除了基本数据类型之外,JavaScript还支持对象、数组、函数、null和undefined数据类型。JavaScript与其他语言一样,也支持常量与变量,不过JavaScript中的变量是无类型的,即可以存储任何一种数据类型的数据。
JavaScript中的运算符比较多,可以分为算术运算符、关系运算符、字符串运算符、赋值运算符、逻辑运算符、逐位运算符和其他运算符七大类。在使用
JavaScript中的运算符时,要注意不同运算符的优先次序。
三、JS函数
3.1基本函数
形式参数:定义函数时为函数定义的参数,它代表参数的类型和位置。
实际参数:调用函数时传递给函数的参数值。
调用时:把实参的值传递给形参。
函数名严格区分大小写。
多个参数用逗号隔开,要调用函数时,必须为逗号隔开的每个参数指定类型兼容的值。
如果需要返回结果,使用return语句。
书写格式:
- 方式1
function 函数名([参数]){ 函数体 }
有返回值,直接return
- 方式2
var 函数名=function([参数]){ 函数体 }
- 方式3
var 函数名=new function([参数],函数体);
3.2 常用函数方法
- Array是可变长数组。
- contact();链接多个数组,返回一个新数组
- join:链接数组元素,用指定的字符。
- pop,push,栈结构
- valueOf(),返回数组的原始值
- sort(),按字符排序
3.3 示例
var arr1=["a","b","c"];
alert(arr1.length);
var arr2=new Array(); //无元素
alert(arr2.length);
arr2[0]="a";
alert(arr2.length);
*/
//构建数组是,给定元素
/*var arr4=new Array("a","b","c");
for(var i=0;i<arr4.length;i++){
alert(arr4[i]);
}
*/
//contact();链接多个数组,返回一个新数组
/*var arr1=["a","b"];
var arr2=["b","d"];
var arr3=arr1.concat(arr2);
for(var i=0;i<arr3.length;i++){
document.write(arr3[i]+"<br />");
}
*/
//join:链接数组元素,用指定的字符。
/*var arr1=[2016,6,2];
var result=arr1.join("-");
document.write(result);
*/
//pop、push
//定义了一个比较器
/*function comp(a,b){
return a-b;
}
var arr1=[1,3,100,5,4,9,7];
arr1.sort(comp);
for(var i=0;i<arr1.length;i++){
document.write(arr1[i]+"<br />");
}
*/
/*var v1=" ";
if(v1){
alert("true");
}else{
alert("false");
}
*/
/*var now=new Date();
document.write(now.toLocaleDateString()+"<br />");
document.write(now.getTime());
*/
/*for(var i=0;i<100;i++){
document.write(Math.random());
}
*/
/*var s1="abc"+"ddd";
document.write(s1.bold());
*/
/*var s1="jbjlnxln";
alert(s1.substr(1,3));
alert(s1.substring(2,9));
*/
//var reg1=new RegExp("^\\d+$");
/*var s1="1234";
var s2=s1.match(reg1); //返回s1中符合条件的内容
alert(s2);
var reg1=/^\d+$/;
*/
四、BOM基础
4.1 Bom简介
- BOM是browser object model的缩写,简称浏览器对象模型
- BOM提供了独立于内容而与浏览器窗口进行交互的对象
- 由于BOM主要用于管理窗口与窗口之间的通讯,因此其核心对象是window
- BOM由一系列相关的对象构成,并且每个对象都提供了很多方法与属性
- BOM缺乏标准,JavaScript语法的标准化组织是ECMA,DOM的标准化组织是W3C
- BOM最初是Netscape浏览器标准的一部分
window对象是BOM的顶层(核心)对象,所有对象都是通过它延伸出来的,也可以称为window的子对象
由于window是顶层对象,因此调用它的子对象时可以不显示的指明window对象。
4.2 示例1:通过点击按钮有弹窗操作
在demo4.html中
<script type="text/javascript">
/*function chose(){
var rtValue=window.showModalDialog("demo3.html","","dialogHeight:100px,dialogwidth:100px");
document.getElementById("name").value=rtValue; }*/
function chose(){
window.showModalDialog("demo3.html",window,"dialogHeight:100px,dialogwidth:100px");
} </script> <body> <input type="text" id="name" name="name" value="" />
<input type="button" value="选择" onclick="chose()" /> </body>
在demo3.html中:
<script type="text/javascript">
function rtValue(inputObj){
/*var v=inputObj.value;
window.opener.document.getElementById("name").value=v;
window.close();
*/ /*window.returnValue=inputObj.value;
window.close();
*/ var rtValue=inputObj.value;
window.dialogArguments.document.getElementById("name").value=rtValue;
window.close();
}
</script> <body>
<input type="radio" name="type" value="金牌会员"
onclick="rtValue(this)" />金牌会员<br />
<input type="radio" name="type" value="铜牌会员"
onclick="rtValue(this)"/>铜牌会员<br />
<input type="radio" name="type" value="钻石会员"
onclick="rtValue(this)"/>钻石会员<br />
<input type="radio" name="type" value="白金会员"
onclick="rtValue(this)"/>白金会员<br /> </body>
4.3 示例2:网页时间的动态显示
<script type="text/javascript">
/*function showTime(){
var date=new Date();
document.getElementById("time").innerHTML=date.toLocaleString();
window.setTimeout("showTime()",1000);
}
window.setTimeout("showTime()",1000);
*/ function showTime(){
var date=new Date();
document.getElementById("time").innerHTML=date.toLocaleString();
}
var i1=window.setInterval("showTime()",1000); function stop(){
window.clearInterval(i1);
}
function start(){
i1= window.setInterval("showTime()",1000);
} </script> <body>
当前时间是:<span id="time" ></span>
<input type="button" value="停止" onclick="stop()" />
<input type="button" value="开始" onclick="start()" /> </body>
4.4 history对象
即网页中的下一步,或者返回到上一个网页的内容。
<script type="text/javascript"> function jump(){
window.location.href="http://www.tianfang1314.cn";
}
</script> <body> <a href="javascript:window.history.back()" >返回</a>
<a href=" javascript:window.history.forward()">前进</a>
<input type="button" value="跳转" onclick="jump()" />
五、DOM基础
5.1 Dom的结构
DOM(Document Object Model)标准是W3C。把文档当做一个树状结构
Node:DOM中一切都是节点。
Element:元素节点
Attr:属性节点
Text:文本节点
document:文档节点
5.2 Node中的常用属性和方法
<script type="text/javascript">
window.onload=function(){
document.getElementById("b1").onclick=function(){
//根据name获取checkbox对象
//XMLDOM方法
/*var hobbyNodes=document.getElementsByName("hobby");
for(var i=0;i<hobbyNodes.length;i++){
hobbyNodes[i].setAttribute("checked","checked");
}*/ //HTML DOM
var hobbyNodes=document.getElementsByName("hobby");
for(var i=0;i<hobbyNodes.length;i++){
hobbyNodes[i].checked=true;
}
}
document.getElementById("b2").onclick=function(){
var hobbyNodes=document.getElementsByName("hobby");
for(var i=0;i<hobbyNodes.length;i++){
hobbyNodes[i].checked=false;
}
}
document.getElementById("b3").onclick=function(){
var hobbyNodes=document.getElementsByName("hobby");
for(var i=0;i<hobbyNodes.length;i++){
hobbyNodes[i].checked=!hobbyNodes[i].checked;
}
}
document.getElementById("c1").onclick=function(){ var hobbyNodes=document.getElementsByName("hobby");
for(var i=0;i<hobbyNodes.length;i++){
hobbyNodes[i].checked=this.checked;
}
} } </script>
<body>
请选择您的爱好:<br />
<input type="checkbox" id="c1" />全选/全不选<br />
<input type="checkbox" name="hobby" value="fb" checked="checked"/>足球
<input type="checkbox" name="hobby" value="bb" />篮球
<input type="checkbox" name="hobby" value="ppb" />乒乓球
<input type="checkbox" name="hobby" value="ymb" />羽毛球
<br />
<input type="button" id="b1" value="全选" />
<input type="button" id="b2" value="全不选" />
<input type="button" id="b3" value="反选" /> </body>
总结:整个javascript的知识比较琐碎也比较精彩,官方文档其实是我们必不可少的工具,学会查看文档并正确使用文档是一个开发者必备的技能!想进一步学习的可以关注我的博客,同时也可以查阅下列推荐的好书:《JavaScript权威指南》、《JavaScript DOM编程艺术》、《锋利的JQuery》、《深入浅出Node.js》。
JavaScript基础精讲的更多相关文章
- Vue 基础精讲
Vue 基础精讲 Vue 官方文档:https://cn.vuejs.org/v2/guide/ VUE 实例 每个组件都是一个 vue 的实例. 一个 vue 项目是由实例组成的. vue 实例上有 ...
- JavaScript基础细讲
JavaScript基础细讲 JavaScript语言的前身叫作Livescript.自从Sun公司推出著名的Java语言之后,Netscape公司引进了Sun公司有关Java的程序概念,将自己原 ...
- VUE.js入门学习(2)-基础精讲
1.VUE 实例 - 一个项目是有很多的vue实例拼装的.每一个组建就是vue的实例. var vm = new Vue() 2.VUE 实例生命周期钩子 生命周期函数:VUE实例在某一个时间点会自动 ...
- 第三章、vue基础精讲
3.1VUE实例 组件:全局组件,局部组件,vue的每个组件也是一个实例,有自己的实例属性和实例方法. 在console中调试vue,vm为vue的实例,凡是以$开头的都是vue的实例属性或者vue的 ...
- 【C++自我精讲】基础系列二 const
[C++自我精讲]基础系列二 const 0 前言 分三部分:const用法.const和#define比较.const作用. 1 const用法 const常量:const可以用来定义常量,不可改变 ...
- 【C++自我精讲】基础系列四 static
[C++自我精讲]基础系列四 static 0 前言 变量的存储类型:存储类型按变量的生存期划分,分动态存储方式和静态存储方式. 1)动态存储方式的变量,生存期为变量所在的作用域.即程序运行到此变量时 ...
- 【C++自我精讲】基础系列一 指针与引用
[C++自我精讲]基础系列一 指针与引用 一 前言 指针.引用.指针与引用区别. 二 指针 变量:代码中常常通过定义变量来申请并命名存储空间,并通过变量的名字来使用这段存储空间. //变量 ...
- Java岗 面试考点精讲(基础篇01期)
即将到来金三银四人才招聘的高峰期,渴望跳槽的朋友肯定跟我一样四处找以往的面试题,但又感觉找的又不完整,在这里我将把我所见到的题目做一总结,并尽力将答案术语化.标准化.预祝大家面试顺利. 术语会让你的面 ...
- 【C++自我精讲】基础系列六 PIMPL模式
[C++自我精讲]基础系列六 PIMPL模式 0 前言 很实用的一种基础模式. 1 PIMPL解释 PIMPL(Private Implementation 或 Pointer to Implemen ...
随机推荐
- 知物由学 | 基于DNN的人脸识别中的反欺骗机制
"知物由学"是网易云易盾打造的一个品牌栏目,词语出自汉·王充<论衡·实知>.人,能力有高下之分,学习才知道事物的道理,而后才有智慧,不去求问就不会知道."知物 ...
- js变量的生命周期
1.在JavaScript中,对于for循环中定义的i变量,其生命周期在循环结束后仍然是有效的. for (var i=0; i < 10; i++){ doSomething(i); } al ...
- leetcode 717. 1-bit and 2-bit Characters -easy
https://leetcode.com/problems/1-bit-and-2-bit-characters/description/ We have two special characters ...
- [LeetCode] Next Closest Time 下一个最近时间点
Given a time represented in the format "HH:MM", form the next closest time by reusing the ...
- 浅谈轮播图(原生JavaScript实现)
现在各种轮播图插件,玲琅满目,用起来也非常方便,通常只需要选择元素然后传入参数就可以了.但是,和授人以鱼不如授人以渔一样的道理,不管怎样最基本的轮播图原理还是应当掌握的.这样不仅有利于我们自己写出来满 ...
- [HNOI2008]明明的烦恼
Description 自从明明学了树的结构,就对奇怪的树产生了兴趣......给出标号为1到N的点,以及某些点最终的度数,允许在 任意两点间连线,可产生多少棵度数满足要求的树? Input 第一行为 ...
- 51nod 1514 美妙的序列
Description 长度为n的排列,且满足从中间任意位置划分为两个非空数列后,左边的最大值>右边的最小值.问这样的排列有多少个%998244353 题面 Solution 正难则反 \(f[ ...
- ●洛谷P3242 [HNOI2015]接水果
题链: https://www.luogu.org/problemnew/show/P3242 题解: 整体二分,扫描线+树状数组. 详细的题解:http://blog.csdn.net/thy_as ...
- 计蒜客NOIP2017提高组模拟赛(五)day2-成绩统计
传送门 用hash,因为map的复杂度可能在这题中因为多一个log卡掉,但是hash不会 可能因为这个生成的随机数有循环的情况,不是完全均匀的 而且这题hash表的长度也可以开的很大 #include ...
- bzoj 1085: [SCOI2005]骑士精神
Description 在一个5×5的棋盘上有12个白色的骑士和12个黑色的骑士,且有一个空位.在任何时候一个骑士都能按照骑士的走法(它可以走到和它横坐标相差为1,纵坐标相差为2或者横坐标相差为2,纵 ...