JavaScript基础

JavaScript

js的简介

javascript是基于对象和事件驱动的脚本语言,主要应用在客户端(浏览器)

js有什么用?

用来实现逻辑,动态网页

js的特点:

  • 交互性(信息的动态交互)

  • 安全性(不可以直接访问本硬盘)

  • 跨平台性(只要是可以解析js的浏览器都可以执行,和平台无关)

js和java不同(一点关系都没有)

Netscape(网景公司),之间是静态的效果。livescript(javascript的前身)

java诞生了,升级了,改名(javascript),火了。

巨头微软:自己开发了一套(jscript)

找一些公司推出的标准: SUN 微软 ECMA(欧洲计算机制造协会),联合推出现在的标准。

ECMAScript标准。基础上扩展。

js是基于对象,java是面向对象。

js解析就能执行,java要先编译再执行

js是弱类型的语言,java是强类型的语言

int a = 5;
a = "str"

js的组成

  • ECMAScript 标准(js的语法,变量,函数)
  • BOM (Browser Object Model)浏览器对象模型
  • DOM (Documen Object Model)文档对象模型

js的语法

把js和html结合(2种)

HTML的文件提供了一个标签script,标签能放在任意位置

<script type="text/javascript">
	// js的代码
	alert("hehe");		//弹出一个提示框	
</script>

引入外部文件,有一个外部文件。编写js文件

<script src="引入的文件(路径)"></script>

 如果script通过src的属性引入了外部文件,里面的js代码就不会执行了(重点,引入外部文件,就不再标签里面写代码了)

<script type="text/javascript" src="demo.js">
	// js的代码
	alert("hehe");		//弹出一个提示框
	//只会弹出文件的内容,alert("hehe")不应该写	
</script>   

一个获取span的内容并弹出的内容

<span id="spanId">你好我是span</span>
<script type="text/javascript">
		//弹出span种的内容
	alert(document.getElementByI("spanId").innerHTML);	
</script>

script这里要放到span的后面。因为从上到下执行,可以用浏览器的f12调试

关键字

var 声明变量

标识符

和java一样

注释

和java一样

变量

声明变量,只使用一个关键字 var

var num = 1234;
var str = "aaa";
num = "aaa";

5种基本数据类型

  1. Undefined 未定义(声明变量,没有赋值)

  2. Null 空,给引用赋值的

  3. Boolean 布尔类型

  4. Number 不区分整数和小数

  5. String js中双引号和单引号代表的都是字符串

     var str = "aaa"		//字符串   var str ='abc';
     var num = 5;		//数字类型	var num = 5.5;
     var flag = true;	//布尔类型	var flag = false;
     
     var date = null;	//null,date就是引用类型
     var un;				//未定义
    

js中不同类型数据可以赋值

var num = 14;
alert(num)	
num = "aaa";
alert(num);

typeof() 判断当前变量是什么类型的数据

var num = 14;	
alert(typeof(num));
num = "aaa";
alert(typeof(num));

运算符

算术运算符

加减法

var num = 3710;
alert(num/1000*1000);   //3710
		 
var str = "12"
alert(str + 1 );	//121
alert(str -1 )		//11
alert("abc" -1 )   //NaN非法的数字

0或者null是false,非0或者非null是true,默认用1表示

alert(true + 1);		//2	现在true解释为1
alert(false + 1);		//1 现在false解释为0
if(5){
	alert("abc");		//能弹出来
}
赋值运算符

和java一样

比较运算符

== 比较值是否相同

=== 比较值和类型是否相同

var num = 15;
var str ="15";
if(num == str){
	alert("两等号");
}
		
if(num === str){
	alert("三等号");
}
逻辑运算符

和java中一样

三元运算符

条件?值1:值2

语句

判断语句
if(){
		 				
}else if(){
		 				
}else{
		 				
}

var num = 4;
if(5 == num){		//尽量把常量放在前面,可以检查错误
	alert("abc");
}
循环语句
for (var i =0 ; i<3; i++) {
	//alert(i);
	window.document.write("i = " + i + "<br />");
}
//while类似

九九乘法表,把表格输出到网页

document.write("<table border='1' width='100%' cellpadding='10'>");
		
//99乘法表
for(var i =1; i<=9 ;i++){
	document.write("<tr>");
	for(var j = 1 ; j<=i ;j ++){
		window.document.write("<td>" + j + " * " + i + " = " + (j*i) + "</td>");
				
	}
	//换行
	//window.document.write("<br />")
	document.write("</tr>");
}

js的数组(js唯一的容器)

java String [] str ={};
js var = [];

数组的声明

var arr=[11,22,33];
var arr = new Array(5);		//长度是5
var arr = new Array(2,3,4);	//元素是2 3 4

数组的属性

长度:length

数组的长度可变的

var arr = [12,22,33];
alert(arr.length)		//3
document.write(arr + "<br />");
		
arr[4] = 99;
arr[5] = "abc";
document.write(arr);

js的方法

java中 public String 方法名称(参数列表){}
js中,通过关键字
	function 方法名称(参数列表num,str){	//参数列表不用写var
	方法体;
	return;
}

function add(){
	alert("你好");
}
		
add();
		
function add2(num1,num2){
	return num1 + num2;
}
		
window.document.write(add2(1,2));

js中没有重载

add2(1,2,3,4);	//3,参数不丢失也不报错,因为参数列表arguments是个数组,直接获取前两个
alert(arguments.length)	//2

方法也是对象

function getSum(){
	return 100;
}
		
var sum = getSum;	//拿到的是引用
alert(sum);		//弹出方法体

js的动态函数和匿名函数

动态函数

js提供了内置的对象 Function

var param1 = "x,y";
var param2 = "var sum;sum = x+y;return sum";
var param3 = "var mut;mut = x*y;return mut";
var add = new Function(param1,param2);
alert(add(4,5));
add = new Function(param1,param3);
alert(add(4,5));

匿名函数

var getSum = function(){
	return 100;
}

js的全局变量和局部变量

全局变量

//在<script>内部定义的变量,就是全局变量
<script type="text/javascript">
		for (var i = 0;i<3;i++) {
			document.write(i+"<br />");
		}
		
		document.write("i=" + i);
		
	</script>
	
	<script type="text/javascript">
		document.write("i==" + i);
	</script>
</body>
</html>

<script type="text/javascript">
	document.write("i===" + i);
</script>//i全都能打印出来

局部变量:在函数的内部定义的变量

function add(){
	var y = 50;//局部变量
}
document.write(y); //不能打印出来

js的对象和API

String对象

声明

String

var str = "abc";
var str = new String("abc");

属性:length:字符串的长度

方法:

和HTML相关的方法(没有提示)

bold()		//使用粗体显示
fontcolor(color)		//设置字体颜色
fontsize(size)	//设置字体的大小(1-7)
italics()	//斜体
link(url)	//设置连接
sub()		//下标
sup()		//上标

println(str.fontcolor("red"));
println(str.link("www.baidu.com"));	
println("3"+"2".sup());

和java中类型的方法

charAt(index)	//返回指定位置的字符
concat()	//连接字符串
indexOf(searchvalue[,fromindex])	//检索字符串,没有返回-1
lastIndexOf(searchvalue[,fromindex])	//从后到前检索
replace(要替换的字符串,替换成啥)	//替换
substring(start,stop)		//截取字符串,从哪里开始结束
substr(start,len)		//截取字符串,从哪开始,多长

编写myTrim(str)方法

function myTrim(str){
	//0位置的下表
	var start = 0 ;
	//最后位置的下表
	var end = str.length -1 ;
	// start 和 end 一直变化,查找下表值字符是否是空格
	while(start<=end && charAt(start) == " "){
		start ++ ;
	}
			
	while(start<=end && charAt(end) == " "){
		end-- ;
	}
			
	var res =str.substring(start,end +1);
	return res;
}

Array对象

声明

var arr =[12,22];
var arr = new Array(12,22);

属性:length
方法:

concat(数组/元素)
join(s)		//通过s标识,进行分割,返回字符串
pop()		//弹栈(末尾)
push()		//压栈(末尾)
shift()		//弹栈(头部)
unshift()	//压栈(头部)
sort()		//排序


var arr = ["NBA","CBA","HBA"];
document.write(arr.concat("WWE")+"<br />"); //NBA,CBA,HBA,WWE
var arr2 = ["NEW","NEW2"];
document.write(arr.concat(arr2)+"<br />");//NBA,CBA,HBA,NEW,NEW2
		
document.write(arr.join("-"));	//用"-"分割  NBA-CBA-HBA

Date日期对象

方法

toLocaleString();		//转换为本地的日期格式
toLocaleDateString();	//本地日期月日
toLocaleTimeString();	//本地日期时分秒
	 	
getDate()		//返回一个月中的某一天(0-31)
getDay()		//返回一周中的某一天(0-6)
getMonth()		//返回月(0-11)   +1
getFullYear()	//返回月份

getTime()	//返回毫秒数
setTime()	//通过毫秒数获得日期

parse(str)  //解析字符串,返回毫秒数
	 		str:
	 			2014-11-14  不能解析
	 			
	 			11/14/2014	可以解析
	 			2014,11,14

//自己拼接一个日期
	var date = new Date();
	var year = date.getFullYear();
	var month = date.getMonth()+1;
	var day = date.getDate();
	var week = date.getDay();
	
	document.write(year+ "年"+ month+"月" +day +"日" +"星期" +week);

Math对象

方法

ceil(x)			//上舍入
floor(x)		//下摄入
round(x)		//四舍五入
fandom()		//0-1随机数

RegExp正则表达式对象

应用:编写注册的表单,对表单输入的内容进行校验

var reg = new RegExp("表达式");	//不常用
var reg = /表达式/	//常用
var reg = /^表达式$/		//常用

方法:

exec(str)	//不常用	
	//如果匹配,返回匹配的结果
test(str)	//常用
	//如果匹配,返回的是true,如果不匹配,返回false

if(reg.test("abc"){
//匹配上了
}else{
//没匹配上
}

全局函数

不需要任何对象

全局函数可以拿过来使用

global帮着管理全局函数

eval()		//解析字符串。执行字符串中间的js代码
isNaN()	//检查是否是非法数字
parseInt()	//解析字符
		 
encodeURI()	//进行编码,中文直接传出可能乱码(参数)
decodeURI()	//解码
		 
encodeURIComponent		//编解码范围不一样(整体连接)
decodeURICompinent
		 
escape()		编解码范围不一样
unescape()



var str2 = encodeURI("abc张三");
document.write(str2 + "<br />");	//abc%E5%BC%A0%E4%B8%89
		
var str3 = decodeURI(str2);
document.write(str3);	//abc张三

BOM浏览器对象模型

一打开浏览器就有一些对象存在

  • DOM Window //窗口对象,一个窗口就是一个Window对象
  • DOM Navigator //和浏览器版本相关
  • DOM Screen //和屏幕相关的对象
  • DOM History //和浏览器历史相关,比如实现上一页下一页
  • DOM Location //和浏览器地址相关的对象
  • Document //文档对象

Navigator userAgent //获取浏览器相关的信息

<input type="button" value="我是按钮" onclick="run()"/>

<script type="text/javascript">
	
	function run(){
		//alert("hehe");
		alert(window.navigator.userAgent);
	}
</script>

History

back()	//返回上一个页面
forward()	//去下一个页面

go()
	go(1)	//等于forward()
	go(-1)	//等于back()


<input type="button" value="上一页" onclick="run2()"/>
<input type="button" value="下一页" onclick="run3()"/>
//返回上一页

<script type="text/javascript">
		//返回上一页
	function run2(){
		window.history.back();
	}
		//去下一页
	function run3(){
		window.history.go(1);
	}
</script>

Location

href	获取URL的完整路径
protocol	获取协议


<input type="button" value="链接" onclick="run4()"/>
<script type="text/javascript">
function run4(){
		//location.href = "http://www.baidu.com";
		alert(location.protocol);
	}
</script>

Window

alert()	//弹出提示框
confirm()	//询问框

提供两按钮,确定和取消
如果点确定,返回true,如果点击取消,返回false


moveBy()	移动浏览器
	 
setInterval("函数",毫秒值)	定时相关的
	 	每个毫秒值执行一次函数
setTimeout("函数",毫秒值)
	 	到了毫秒值后执行一次函数

clearInterval()	清楚定时
clearTimeout()

clearInterval()	清楚定时
clearTimeout()
	 
open(URL,name,features,replace)	打开浏览器窗口
close()	关闭浏览器窗口
//window.open("www.baidu.com","","'width = 200,heigth = 100'")

属性:
	opener 返回对创建此窗口的窗口引用
	win open() 弹出baidu的窗口

		在baidu窗口中 baidu.opener得到lwin的引用



<input type="button" value="删除" onclick="del()" />
<input type="button" value="移动" onclick="run1()" />
<input type="button" value="定时循环" onclick="run2()" />
<input type="button" value="定时" onclick="run3()" />


function del(){
	if(window.confirm("确定删除吗?")){
		//点击确定,执行
		//删除数据ajax
		alert("删除成功");
	}else{
		//点击取消执行
		alert("怎么这么不小心呢")
	}
}
	
function run1(){
	window.moveBy(20,20);	//chrome和ie为了安全不起作用
}
	
function run2(){
	window.setInterval("run4()",3000);		
}
	
function run3(){
	window.setTimeout("run4()",3000);
}
	
function run4(){
	alert("heeh");
}

一个window案例

windos.html

<!DOCTYPE html>
<html>
<head>
	<meta charset="UTF-8">
	<title></title>
</head>
<body>
	用户编号:<input type="text" id="numId" name="usernum" /><br />
	用户姓名:<input type="text" id="nameId" name="usernum" /><br />
	<input type="button" value="选择" onclick="show()" />
</body>
<script type="text/javascript">
	/*
	 	弹出新的窗口
	 * */
	function show(){
		window.open("user.html","","width = 400 , height =200"); 
	}
</script>
</html>

user.html

<!DOCTYPE html>
<html>
<head>
	<meta charset="UTF-8">
	<title></title>
</head>
<body>
	<table border="1" width="90%">
		<tr>
			<th>操作</th>
			<th>编号</th>
			<th>姓名</th>
		</tr>
		<tr align="center">
			<td>
				<input type="button" value="选择" onclick="run('001','张三')"/>
			</td>
			<td>001</td>
			<td>张三</td>
		</tr >
		<tr align="center">
			<td>
				<input type="button" value="选择" onclick="run('002','李四')" />
			</td>
			<td>002</td>
			<td>李四</td>
		</tr>
		<tr align="center">
			<td>
				<input type="button" value="选择" onclick="run('003','王五')"/>
			</td>
			<td>003</td>
			<td>王五</td>
		</tr>
	</table>
</body>
<script type="text/javascript">
	
	/*
	 点击按钮,拿到编号和姓名
	 把值赋值在windows的窗口文本框
	 关闭窗口
	 * */
	function run(num,name){
		var windows = window.opener;	//那到user.html的引用
		windows.document.getElementById("numId").value = num;
		windows.document.getElementById("nameId").value = name;
		window.close();
	}
	
</script>
</html>
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值