JavaScript 基础

1概述:

JavaScript是目前web开发中不可缺少的脚本语言,js不需要编译即可运行,运行在客户端,需要通过浏览器来解析执行JavaScript代码。
诞生于1995年,当时的主要目的是验证表单的数据是否合法。
JavaScript本来应该叫Livescript,但是在发布前夕,想搭上当时超热的java顺风车,临时把名字改为了JavaScript。(也就是说js跟java没有关系,当时只是想借助java的名气)。

javaScript 被用来改进设计、验证表单、检测浏览器、创建cookies,等等。JavaScript 是因特网上最流行的脚本语言,并且可在所有主要的浏览器中运行,比如: Internet Explorer、 Maxthon、Mozilla、Firefox、Netscape、Chrome和 Opera等。
常用 1 修改html及css代码 (2)验证表单

1. 嵌入方法

1.1. 内嵌式

理论上js可以写在任何第一个地方 但是一般写在head标签里或者 body下

1.2. 外链式

首先新建一个文件类型为.js的文件,然后在该文件中写js语句,通过script标签对引入到html页面中。

1.3. 行内式

直接书写在标签身上,是一个简写的事件,所以又称之为事件属性。 onclick单击事件

点我呀!

2. 语句

1.在编程语言中,这些编程指令被称为语句。
JavaScript 程序就是一系列的编程语句。
注释:在 HTML 中,JavaScript 程序由 web 浏览器执行。
2.JavaScript 语句由以下构成:
值、运算符、表达式、关键词和注释。
3.用分号(;)分隔JavaScript语句。

3. 注释

单行注释: // 注释语句 快捷键ctrl+/
多行注释: /* 注释语句 */ 快捷键ctrl+shift+/
注意:多行注释相互不能嵌套使用,只能在多行注释里面使用单行注释!

4. 变量

变量是用于存储信息的"容器"
javascript单双引号没区别
var a=’moonsec’;

5. JavaScript 保留关键字

Javascript 的保留关键字不可以用作变量、标签或者函数名。有些保留关键字是作为 Javascript 以后扩展使用。

6. JavaScript 作用域

6.1. Javascrpt 局部变量

局部作用域 变量在函数内声明,变量为局部作用域。
function myFunction() {
var carName = “Volvo”;
// 函数内可调用 carName 变量
}

6.2. JavaScript 全局变量

变量在函数外定义,即为全局变量。
全局变量有 全局作用域: 网页中所有脚本和函数均可使用。
var carName = " Volvo";
// 此处可调用 carName 变量
function myFunction() {
// 函数内可调用 carName 变量
}

7. 数据类型

数值型:number(凡是数字都是数值型,不区分整数和小数)
字符串:string(凡是引号包裹起来的内容全部都是字符串)
布尔:boolean(true、false)
对象类型:object(特殊取值null)
未定义型:undefined
对象类型 数组 字典

7.1. 判断类型

var a = “iamstring.”;
var b = 222;
var c= [1,2,3];
var d = new Date();
var e = function(){alert(111);};
var f = function(){this.name=“22”;};

alert(typeof a) ------------> string
alert(typeof b) ------------> number
alert(typeof c) ------------> object
alert(typeof d) ------------> object
alert(typeof e) ------------> function
alert(typeof f) ------------> function

7.2. 数字类型(Number)

只有一种数字类型,数字 可以是小数 ,也可以的整数
以0开头 默认使用8进制来表示我的这个数字
以0x开头 默认使用16进制来表述我的这个数字
如果以-开头 默认以负数
如果我带有e:以科学计数法来解析我的这个数字

parseInt(…) 将某值转换成数字,不成功则NaN
parseFloat(…) 将某值转换成浮点数,不成功则NaN
特殊值:
NaN,非数字。可使用 isNaN(num) 来判断。
Infinity,无穷大。可使用 isFinite(num) 来判断。

7.3. 字符串型(string)

字符串是存储字符的变量,用来表示文本的数据类型,程序中的字符串是包含单引号/双引号的,由单引号来界定我双引号中包含的字符串

obj.length 长度

obj.trim() 移除空白
obj.trimLeft()
obj.trimRight)
obj.charAt(n) 返回字符串中的第n个字符
obj.concat(value, …) 拼接
obj.indexOf(substring,start) 子序列位置
obj.lastIndexOf(substring,start) 子序列位置
obj.substring(from, to) 根据索引获取子序列
obj.slice(
, end) 切片
obj.toLowerCase() 大写
obj.toUpperCase() 小写
obj.split(delimiter, limit) 分割
obj.search(regexp) 从头开始匹配,返回匹配成功的第一个位置(g无效)
obj.match(regexp) 全局搜索,如果正则中有g表示找到全部,否则只找到第一个。
obj.replace(regexp, replacement) 替换,正则中有g则替换所有,否则只替换第一个匹配项,
$数字:匹配的第n个组内容;
$&:当前匹配的内容;
$`:位于匹配子串左侧的文本;
$':位于匹配子串右侧的文本
$ : 直 接 量 :直接量 符号

7.4. 布尔类型(boolean)

一般是用在流程控制语句中,字符串和数字类型都是无穷多个,然而我们的布尔数据类型只有两个:true 和 false
这两个个值一般用于说明某个事物是真或者假
js一般用布尔类型来比较所得到的结果

布尔类型仅包含真假,
== 比较值相等
!= 不等于
=== 比较值和类型相等
!=== 不等于
|| 或
&& 且

7.5. null(空)

null
关键字null是一个特殊的值,它表示变量为空值,用来定义空的或者是不存在的引用。
如果试图去引用一个没有定义的值,就会返回一个null。
这里注意一点:null并不等于"" 或者0

7.6. undefined(未定义)

这个值表示变量不含有值,没有定义的值,或者被定义了一个不存在的属性值

!null和undefined区别:
null它表示一个变量被赋予一个空值,而undefined是表示变量还没有被赋值

7.7. 数组

1、数组内可以存放任意数据类型的数据(本质上它也是对象)
2、数组元素不赋值的情况下 值为undefined
3、如果数组打印的时候,元素不赋值""
4、访问数组范围之外的元素,不会出现越界的问题,undefined
5、定义数组大小,照样可以添加更多元素

7.7.1. 定义数组的方法:

1、var arr=[]//定义一个空数组
2、var arr=[10,20,{“name”:“tomy”,“age”:19},0.1,“string”,true,[“aaa”,“bbb”]]//定义的同时赋值
3、var arr=new Array();//定义一个空数组
4、var arr = new Array(10,20,{“name”:“tomy”,“age”:19},0.1,“string”,true,[“aaa”,“bbb”])//定义的同时赋值
5、var arr=new Array(10)//定义一个长度为10的数组

7.7.2. 数组的操作

obj.length 数组的大小
obj.push(ele) 尾部追加元素
obj.pop() 尾部获取一个元素
obj.unshift(ele) 头部插入元素
obj.shift() 头部移除元素
obj.splice(start, deleteCount, value, …) 插入、删除或替换数组的元素
obj.splice(n,0,val) 指定位置插入元素
obj.splice(n,1,val) 指定位置替换元素
obj.splice(n,1) 指定位置删除元素
obj.slice( ) 切片
obj.reverse( ) 反转
obj.join(sep) 将数组元素连接起来以构建一个字符串
obj.concat(val,…) 连接数组
obj.sort( ) 对数组元素进行排序

8. 函数

JavaScript 函数语法
JavaScript 函数通过 function 关键词进行定义,其后是函数名和括号 ()。
函数名可包含字母、数字、下划线和美元符号(规则与变量名相同)。
圆括号可包括由逗号分隔的参数:
var x = myFunction(7, 8); // 调用函数,返回值被赋值给 x
function myFunction(a, b) {
return a * b; // 函数返回 a 和 b 的乘积
}
普通函数:
function func(arg){
return arg+1;
}

var result = func(1);
console.log(result);		var result = func(1);
console.log(result);

匿名函数(没有名字的函数称为匿名函数)
setInterval(function(){
console.log(123);
},500)
自执行函数 (创建函数并且自动执行)
(function(arg){
console.log(arg);
})(1);

9. 字典

字典 是一种以键-值对形式存储数据的数据结构
var dict = {‘k1’:“moonsec”,‘k2’:‘moon’,‘age’:18};
输出字典元素
for(var item in dict){
console.log(dict[item]);
}
获取指定元素
dict[‘age’] 获取key为age的元素
赋值
dict[‘age’]=10
删除元素
delete dict[‘one’];
delete dict.age;

10. js的序列化和反序列化

Json与字符串的转换
把对象转为字符串
JSON.stringify()
把字符串转为数组
newli = JSON.parse()

序列化 即js中的Object转化为字符串
使用toJSONString
var last=obj.toJSONString(); //将JSON对象转化为JSON字符
使用stringify
var last=JSON.stringify(obj); //将JSON对象转化为JSON字符
反序列化 即js中JSON字符串转化为Object

11. 转义

 decodeURI( ) URl中未转义的字符
 decodeURIComponent( ) URI组件中的未转义字符
 encodeURI( ) URI中的转义字符
 encodeURIComponent( ) 转义URI组件中的字符
 escape( ) 对字符串转义
 unescape( ) 给转义字符串解码
 URIError 由URl的编码和解码方法抛出

12. eval

eval() 函数可计算某个字符串,并执行其中的的 JavaScript 代码。

13. 时间

Date 对象
var myDate = new Date();
myDate.getYear(); //获取当前年份(2位)
myDate.getFullYear(); //获取完整的年份(4位,1970-???)
myDate.getMonth(); //获取当前月份(0-11,0代表1月) 所以获取当前月份是 myDate.getMonth()+1;
myDate.getDate(); //获取当前日(1-31)
myDate.getDay(); //获取当前星期X(0-6,0代表星期天)
myDate.getTime(); //获取当前时间(从1970.1.1开始的毫秒数)
myDate.getHours(); //获取当前小时数(0-23)
myDate.getMinutes(); //获取当前分钟数(0-59)
myDate.getSeconds(); //获取当前秒数(0-59)
myDate.getMilliseconds(); //获取当前毫秒数(0-999)
myDate.toLocaleDateString(); //获取当前日期
var mytime = myDate.toLocaleTimeString(); //获取当前时间
myDate.toLocaleString( ); //获取日期与时间
加一天
var dateTime = new Date();
dateTime=dateTime.setDate(dateTime.getDate()+1);
dateTime=new Date(dateTime);
dateTime=dateTime.setDate(dateTime.getDate()+1);

14. 面向对象

JavaScript是一种基于原型的语言,它没类的声明语句,比如C+ +或Java中用的。这有时会对习惯使用有类申明语句语言的程序员产生困扰。相反,JavaScript可用方法作类。定义一个类跟定义一个函数一样简单。在下面的例子中,我们定义了一个新类Person。
第一种方法
function Person(name) {
//构造函数里面的方法和属性
this._name = name;
this.getName = function () {
console.log(this._name);
};
this.setName = function (name) {
this._name = name;
};
}

var p = new Person(“张三”);
p.getName(); // 张三
p.setName(“李四”);
p.getName(); // 李四
对于上述代码需要注意:
Person充当的构造函数
this代指对象
创建对象时需要使用 new

第二方法
// 定义类class Person {
//类的构造函数,实例化的时候执行,new的时候执行
constructor(name) {
this._name = name;
}
getName() {
console.log(this._name);
}
setName(name) {
this._name = name
}
}
let p = new Preson(‘张三’)
p.getName(); // 张三
p.setName(‘李四’);
p.getName(); // 李四

15. 原型

我们所创建的每一个函数,解析器都会向函数中添加一个属性prototype
这个属性对应着一个对象,这个对象就是我们所谓的原型对象
如果函数作为普通函数调用时 prototype没有任何作用
当函数以构造函数调用时,它所创建的对象中都会有一个隐含的的属性
指向该构造函数的原型 我们可以通过__proto__来访问该属性
我们可以将对象中公有的内容,统一设置到原型对象中

function Persion(username,age){
}
//console.log(Persion.prototype);
var p = new Persion();
console.log(p.proto == Persion.prototype);

定义原型变量和原型变量
function Persion(username,age){

}
//console.log(Persion.prototype);
Persion.prototype.a = ‘女’;
Persion.prototype.Sayname=function(){
return Persion.name;
}
var p1 = new Persion(‘moonsec’);
var p2 = new Persion();
alert(p1.Sayname());

16. 运算符

用于执行程序代码运算,会针对一个以上操作数来进行

16.1. 算术运算符

      • / % ++ –

字符串拼接使用“+”

16.2. 比较运算符

<

==
!=
<=

=
=== 全等于:将数值以及数据类型一并比较
!==不全等于:将数值以及数据类型一并比较

16.3. 赋值运算符

=
+=

-=
=
/=
%=
a=a+2;>a+=2
a=a-2;
>a-=2
a=a
2;>a*=2
a=a/2;
>a/=2
a=a%2;==>a%=2

16.4. 逻辑运算符

&& 全真为真
|| 一个为真就是真
! 取反

16.5. 三元运算符(三目运算符)

表达式1?表达式2:表达式3
当我的表达式1成立时 执行表达式2 否则执行表达式3
var max = 2>1?‘>’:‘<’;
console.log(max);

17. 流程控制语句

17.1. if语句

if(条件){
函数体
}

17.2. if else语句

if(条件){
函数体1
}else{
函数体2
}

17.3. if…else if…else语句

if(条件1){

}else if(条件2){

}else if(条件n){

}else{

}

17.4. switch语句:多分支语句

switch(表达式) {
case n:
代码块
break;
case n:
代码块
break;
default:
默认代码块
}

switch (new Date().getDay()) {
case 6:
text = “今天是周六”;
break;
case 0:
text = “今天是周日”;
break;
default:
text = “期待周末~”;
}

17.5. 循环结构:

1、while循环:先判断条件 当条件成立 再执行
while(循环成立条件){

}

17.6. do…while循环

do…while循环:不论条件成不成立 先执行一遍 再判断
do{

}while(循环成立条件)

17.7. for循环

17.8. for in循环

continue:
跳过当前循环,直接进入循环的下一个步骤
break:
结束循环

18. JS操作DOM

18.1. 什么是DOM?

DOM(document object model)文档对象模型,是针对HTML和XML的一个API(应用程序接口)。DOM给我们描述了一个具有层次化特点的节点树,允许开发人员增删改查页面的某些部分。

 JavaScript 能够改变页面中的所有 HTML 元素
 JavaScript 能够改变页面中的所有 HTML 属性
 JavaScript 能够改变页面中的所有 CSS 样式
 JavaScript 能够对页面中的所有事件做出反应

18.2. DOM查找元素

document获取节点的基本方法
document.getElementById(‘id’); //通过id来获取元素,返回指定的唯一元素。
document.getElementsByName(“name”); //通过name来获取元素,返回name='name’的集合。
.document.getElementsByClassName(“classname”) //用classname来获取元素,返回的是一个class="classname"的集合(不兼容IE8及以下)。
document.getElementsByTagName(‘div’); //用元素的标签获取元素,返回所有标签=“div”的集合。

18.2.1. 查找

直接查找
var obj = document.getElementById(‘id’);
间接查找
文件内容操作
innerText 仅文本
innerHTML 全内容
value
input value 获取当前的值
select 获取选中的value的值 document.getElementById(‘s1’).selectedIndex=1
Textarea 获取value的值

18.2.2. 操作

样式操作
className 列出样式 字符串
classList 列出样式 返回数组
classList.add 增加样式
classList.remove 删除样式

obj.style.fontSize='16px';

属性操作
获取属性
getAttribute()
增加设置一个属性
添加属性
setAttribute(‘xxx’,‘alexe’)
删除属性
removeAttribute(value)

创建标签 并添加到html中
第一种方式 字符串方式
insertAdjacentHTML()

	<input type="button" value="+" onclick="add();"/>
	<div id="div1">
		<p><input type="text"/></p>
	</div>
	<script>
		function add(){
			var tag="<p><input type='text'></p>"
			document.getElementById('div1').insertAdjacentHTML('beforeEnd',tag);
		}
		
	</script>
</body>

有四种值可用:
 beforeBegin: 插入到标签开始前
 afterBegin:插入到标签开始标记之后
 beforeEnd:插入到标签结束标记前
 afterEnd:插入到标签结束标记后

第二种方式 对象的方式
document.createElement




提交表单
任何标签都可以通过dom提交
getElementById(‘id’).submit()



提交

其他
console.log 终端输出
alert 弹出框
confirm 确认框 标题 true false

url和刷新
location.href 获取url
location.href =‘url’ 重定向
location.reload() 重新加载

定时器
setInterval()
clearInterval()

			<input id="i1" type="text" />
	<input type="button" value="停止" onclick="stop();">
	
	<script>

	
	function setTime(){
		var tag = new Date();
		document.getElementById('i1').value=tag;
	}
	
	var obj=setInterval('setTime()','500');
	
	function stop(){
		clearInterval(obj);
	}

只执行一次
setTimeout()
clearTimeout()

事件 绑定事件两种方式 a.直接标签绑定 直接标签绑定 οnclick='' 先获取dom对象,然后进行绑定 document.getElementById('xxx').onclick()
  • 5
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
第一部分 软件可行性研究与项目开发计划 1. 问题定义 随着时代的进步,网络技术层出不穷信息量急剧膨胀,整个人类社会已成为信息化的社会,人们对信息和数据的处理。管理和加工已经进入自动化、网络化和社会化的阶段。博客的兴起,让更多的人在网络上,建起了展示自己的空间,同时更多的人愿意在网络上,分享个人的心情日记,个人收藏,这些都是普通的博客内容。 本次论文的目的制作网络日记本,我们要实现网络日记本的增加、删除、修改三大部分的内容。设计完成网络日记本,让它具有文章分类、日期时间显示、后台管理等功能。此次论文的开发过程,我们采用asp作为开发语言,Micsoft Access为数据库, 软件运行环境Pentium处理器+IIS+IE6.0+128MB。 2.可行性研究 本论文共分八个章节完成,我们的本次制作任务。在第一章,我们将把我们即将遇到的问题提出来,以便在以后的章节完成它,并制定项目开发的进程计划;第二章软件需求分析,在本章节,我们将逐一分析制作过程遇到的问题,例如:看日记,写日记,删除日记,日记管理等,并且把相关数据做成数据字典;第三章软件概要设计,在这一章节,我们将把各个问题一一作以详细的分析,并且制定解决的办法,用数据流程图,模拟日记本在使用过程出现的情况;第四章软件详细设计,在此章节,我们将再次将日记本的各个功能提出,加以详细的分析,完成系统将出现的每一个细节。通过这一部分,我们将完成日记本制作的理论部分;第五章软件编码,顾名思义,在这一章节,我们将对日记本实行软件编码,在实际解释每段编码的含义,具体完成日记的增加、删除、数据库连接这几部分;第六章软件测试与调试,在这章里,我们对软件进行测试运行,找到软件的不足,加以修正;第七章 结束语,本章节,是在制作工程,个人的感受与收获的总结;第八章附录,此章节为本次论文的结尾部分。 3.项目开发计划 本次论文的时间安排如下 (1)需求分析阶段:(2007年4月份---2007年5月份) (2)详细设计阶级:(2007年5月份---2007年6月份) (3)测试阶段:(2007年6月份) 第二部分 软件需求分析 1. 用户功能和数据流图(DFD) 在项目可行性研究的基础之上,我们对系统各项功能进行了初步的分析。 1.1 管理界面登陆 本软件采用的是前台录入方式,所以日记的一切管理无需从后台进入才能进行操作。在前台完成所有操作,这一点我们将在以后的章节详细说明。在登陆到管理界面,我们要输入管理员账号和密码,进入到管理主界面。在主界面进行所要的基本操作。 (1)在登陆界面,我们输入账户信息,账户信息包括管理员登陆名和管理员密码,这些信息经过基本信息库身份验证,如果信息错误将提示“输入错误”提示信息,显示错误界面。如用户不进行任何操作,界面将在5秒后自动返回最初的管理员登陆界面;如果信息正确无误,将进入管理主界面,管理员就可以进行自己所需要的详细操作了。此过程数据图(图2-1),所示 (图2-1) (2)账号的合法性验证,在登陆界面,我们将设置两个按钮,即“确定”和“重置”。当用户在输入密码后发现密码输入错误时,点击“重置”键即可将之前输入的密码清除。在用户输入密码后,点击“确定”键时,计算机将调用身份验证数据库进行身份验证,验证该登陆用户是否是合法的管理员。如果其密码输入正确将进入下一个界面。其数据流程图(图2-2)所示: (图2-2) 1.2 需求选择 当密码验证正确后进入需求界面,在此界面有浏览、增加、删除、修改密码等功能选项以退出按钮。(图2-3) (图2-3) 在接下来的部分里,我们将用数据流图的形式来表示各个需求选择的功能 1.3 浏览 其数据流程图(图2-4) (图2-4) 注:在浏览文章的时候,我们可以进行选题浏览,即:对自己所知道题目的文章直接浏览。还可以进行分类浏览,即:根据不同分类,选择不同的类别,在一种类别进行文章浏览。 1.4 修改密码 其数据流程图如下(图2-5) (图2-5) 注:㈠在请输入旧密码、新密码界面,我们在这里要求输入旧密码一次,用于修改用户的合法性验证;输入新密码两次,用于新密码的一致性验证。 ㈡信息处理有三种情况ⅰ. 旧密码输入错误,返回修改密码界面。ⅱ.新密码两次输入,两次输入不符,返回修改密码界面。ⅲ.修改密码成功,显示修改完成界面。 2. 数据字典(DD) 1)登陆名 长度:5-12位 类型:字符型 2)密码 长度:6-14位  类型:整型 3)文章内容 类型:整型 4)日期 __年__月__日 5)名称:基本信息库 登陆名 密码 6)名称:数据心 文章名称 文章类别 文章写作日期 文章内容 7)名称:基本信

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值