简介
目的:
- 1.实现网页动态效果
- 2.输入数据的格式校验 ,减轻服务器(Tomacat DB)校验数据的压力
介绍:
- 1.基于浏览器运行的面向对象的编程语言
- 2.弱类型编程语言(变量类型 ,引用类型只有一个 var)
var 变量名 = .....;
‘1’ == 1 true 不考虑变量类型
JavaScript基本语法
- 1.控制台输出:console.log(“字符串”)
- 2.网页中输出内容:document.write(“字符串”)
- 3.提示框:window.alert(“字符串”)
数据类型+变量
- 数据类型: number string boolean object
- 变量:var
特殊值:
- undefined 未定义 定义了变量没有赋值
- NaN 非数 将非数字的内容,强行当成数字使用
- null 空值 var a=null 清空变量使用
运算符表达式
- === 匹配内容和类型
- boolean表达式?值1:值2
条件判断
if(“1”==1)条件成立 | |
true | false |
非0 | 0 |
长度不为0的字符串 | '' "" |
undefined NaN null |
函数
概念:
一组具有特定(功能)的代码
内置函数:
- parseInt(值); //将参数的值转化为整数
- typeof(值); //获得值的数据类型
- isNan(值); //判断值是不是非数,不关系数据类型【是数字 false 不是数字 true】
自定义函数:
函数名 函数体 函数体 参数表
语法:
- 1.function 函数名(参数列表){函数体}
- 2.var 函数名 = function(形参){函数体}
调用:
- 1.函数名(参数);
- 2.函数名();
特点:
- 1.形参只需要写形参名,不写形参的var
- 2.函数声明,不需要明确返回值类型
- 3.函数也是一个值(数据),function类型
- 4. 函数调用的时候,函数名(参数个数,语法上不限制)
- 5.JavaScript函数,没有重载
- 6.函数内部,有一个局部变量,arguments保存函数调用的时候,传入的实际参数
JavaScript对象
Math
数学函数内置
属性:
Math.属性名
方法:
Math.方法名();
日期
Date日期
1.创建日期
var d = new Date();//获得浏览器所在电脑当前系统时间
var d = new Date(“1999-9-9”);//构造一个指定的日期时间
2.方法
getFullYear();//获得4位年份
getMonth();//获得月份 0-11月
getDate();//获得日期
getDay();//星期0-6
数组
1.创建数组
var as = [ ];
var as = [1,2,3 ];
数组赋值 : 数组变量名【下标】 = 值;
访问数组中的值 : 数组变量【下标】
2.属性
length
3.数组特点
1.声明数组【】;
2.数组长度可变;
3.数组中未赋值的下标上的值:undefined
4.同一个数组中,元素类型,不受限制
4.方法
sort();//将数组中元素,按照字符串顺序排序
指定sort排序规则:
//比较每两个元素,传给内部函数ab,通过返回值决定排序顺序
sort(function(a,b){
//返回值 1 -1 0
return a-b;
});
5.遍历数组
for(var i=0;i<数组.length;i++){
console.log(数组【i】);
}
对象
var person = { "id" : "100",//字符串属性 "name" : "老华",//字符串属性 "age" : 18,//数字属性 "address" : {//对象属性 "city" : "成都", }, "say" : function(){//函数类型属性 window.alert("hello"); } }; console.log(person); console.log(person.say());//1.访问对象属性 console.log(person["name"]);//2.访问对象属性
遍历对象中的所以属性
for-each
for(var v in 对象){
//v 当前被遍历到的属性名 类型是 String “ name ” “id”
// 获得属性值: 对象[v]
}
JavaScript事件
事件驱动编程
概念:某个事件源(华哥),身上发生了特定的事件(被打了),事件监听器,出发特定代码的执行
要素:
- 事件对象:发生的事(被打)
- 事件源 :事件发生在那个对象身上(华哥)
- 事件监听器:监听事件源身上发生特定事件,触发指定代码的运行
编程步骤
需求:点击按钮,弹框,提示“别点我”
- 1.编写标签(按钮)
- 2.事件:单机
- 3.单机事件监听器,绑定对应的代码
function test1(){ window.alert("别点我!!!!!!!!"); } <input type="button"onclick="test1()" value="华哥" />
常见的事件
鼠标相关 | body相关事件 | form表单控件相关事件 | |||
onclick | 单机事件 | onKeyDown | 键盘按键按下 | onblur | 当前元素失去焦点 <input> |
ondblclick | 双击事件 |
onKeyUp |
键盘按键抬起 | onchange | 当前元素失去焦点,并且值改变<input> |
onmouseover | 鼠标移入 | onload | 页面加载完毕时触发 | onfocus | 当前元素获得焦点<input> |
onmouseout | 鼠标移出 | onunload |
窗口离开时 (刷新,返回,前进,主页) |
onsubmit | 表单提交 在form标签上 |
onmousemove | 鼠标移动 | onscroll | 页面滚动 | ||
onmousedown onmouseup |
鼠标按下 鼠标松开 |
onresize |
页面缩放 |
注意事项:
1.事件监听器绑定的时间函数内,有一个局部变量 event
- event 事件对象
- event.target 事件源(标签)
- event.keyCode 按下了那个按键 按键编码
- event.type 事件名称(“click”,“db1click”)
2.HTML默认事件效果
a:默认跳转
//禁用超链接默认事件 <a href="www.baidu.com" onclick="return false">百度一下</a>
form:默认提交数据,并且跳转
3.事件的冒泡
事件的触发会从子标签,冒泡方式,逐步触发父标签的事件
防止事件冒泡:
谷歌/ff浏览器:
event.stopPropagation();//停止事件冒泡
IE:
event.cancleBubble = true; //取消事件冒泡
DOM编程
概念:
一个HTML标签对应的一个浏览器内部的DOM对象
浏览器加载HTML标签机制:
- 1.浏览器会将HTML标签的所有标签,按照父子关系,创建出对应的DOM对象,且形成DOM树
- 2.浏览器内部的DOM对象,决定网页最终显示效果
- 3.HTML标签对应的 document对象,使用document
- 4.需要显示在网页中标签效果,必须将标签的dom对象绑定在当前document的dom树中
标签和dom对象对应关系
- 1.一个标签对应一个对象
- 2.一个标签的属性,对应浏览器内部DOM对象的属性
style属性是一个对象类型
DOM操作
1.获得dom对象
1.根据标签id获得dom对象 var xx_dom = document.getElementById("标签的id"); 2.根据标签名获得标签对象 var xx_doms = document.getElementsByTagName("标签名");//数组返回值 3.根据标签的class名字获得标签对象 var xx_doms = document.getElementsByClassName("class值"); 原则: 1.父标签拥有查找子标签的权限 父标签(document).getEleementsxxxxx(); 2.建议查找标签的dom对象,尽可能用父标签,进行精确查找
2.访问dom对象的属性
标签属性: dom对象.属性名 dom对象.属性名 = “”; 标签体: dom对象.innerText 标签体中间的普通文本 dom对象.innerHTML 标签体中间的所有内容(文本+标签) 样式属性: 访问类型 样式名称 js访问方式 操作文字颜色 style="color:red" dom对象.style.color 操作文字大小 style="font-size:18px" dom对象.style.fontSize 操作背景色 style="background-color:red" dom对象.style.backgroundColor 表单属性: 访问标签的输入内容 标签input的dom对象.value 下拉列表属性: select相关属性 select的dom对象.options 下拉列表中所有的选项 select的dom对象.selectedIndex 被选中的选项的下标 select的dom对象.options.length=0 清空下拉列表
DOM对象常见的操作方法
1.创建dom对象
var xx_dom = document.createElement("标签名");
2.将dom对象,添加在某个标签的内部
把tr标签的dom对象,添加在tbody内部 tbody 父标签dom对象.appendChild(子标签dom对象);//最后一个孩子位置
3.删除
本标签dom对象.remove(); //将本dom对象从网页中删除,消失
4.常用的dom遍历属性
dom对象.parentNode // 访问dom对象的亲爹 (直接父对象) dom对象.nextSibling //直接弟弟标签,可能有空白节点 dom对象.previosSibling //直接哥哥标签,可能有空白节点 dom对象.childNodes //所有儿子标签(包含空白部分)
5.正则表达式验证
作用:通过表达式验证输入的内容是否符合一定的规律(数字,小数,日期,手机号,邮箱等等)
正则表达式 : 对象; 正则表达式.test("判断的字符串");//true 或者false 语法: 正则表达式:/正则/ /正则表达式规则/.test(字符串)
BOM编程
概念:浏览器对象模型,将浏览器窗口的所有元素映射对象
属性:alert window history location document
window相关
1提示框 window4.alert("提示文字"); 2.确认框 var r = window.confirm("提示确认的文字"); 返回值 true 用户点击确定 false 用户点击取消 3.对话框 var r = window.prompt("提示文字"); 返回值 用户输入的内容 4.周期定时器 window.setInterval(周期性调用的函数,间隔时间毫秒); 5.延迟定时器 间隔一定时间之后运行某个代码 window.setTimeout(延迟调用的函数,想个多少时间之后运行) 6.窗口的打开和关闭 window.close(); window.open("地址")
history相关
操作网页前进,刷新,后退
history.go(1|0|-1);
location相关 location.href = "url"; //给个地址,并完成跳转
请求服务器资源
- 手动浏览器地址栏
- 超链接
- form表单的action
- img src = “”
- location.href = “”
封装dom对象
/** 可以根据#ID .class 标签名 获得dom对象 $get("#td1") $get(".td") $get("td") */ function $get(selector){ //如果selector以 #开工 根据id获得 var dom = null; if(/^#/.test(selector){ dom = document.getElementById(selector.substr(1)); }else if(/^./.test(selector){ //如果以 。 开头 获取className dom = document.getElementsByClassName(selector.substr(1)); }else{ //根据标签名获得标签 dom = document.getElementsByTagName(selector); } return dom; }
复用javascript代码
1.将js代码放在独立文件中 文件名: * .js 2.在需要使用js代码页面,引入文件 <script src = "外部js文件的路径" type = "test/javascript"></script>
基于编程的事件绑定
1.绑定事件 dom对象.onclick = function(){函数事件触发执行} 2.在事件函数内,禁用默认事件(超链接,表单) dom对象.onclick = function{ //禁用more事件 return false; } 3.基于编程绑定 网页加载后运行的代码 window.onload = function(){ 网页加载完毕之后。//给标签绑定事件 }