JavaScript学习笔记,前端基础
[TOC]
引言
什么是javascript?
javascript是一种动态网页(网页结构的变化)效果处理的技术,应用在html上。
注意:
- javascript与java没有任何关系
javascript client端技术运行在html网页中
编译型编程语言 不能跨平台 运行效率高 C C++
解释型编程语言 跨平台 运行效率低 javascript
java是先编译后解释的语言 sacal jruby groovy…javascript存在浏览器的差异
不同的浏览器在支持javascript预言时,存在微小的不同
IE系列 IE浏览器
WebKit系列 chrome Firefox safri 360浏览器(支持最标准的javascript语言 经过ww3c组织认证)
第一个javascript程序开发
IDE:MyEclipse Eclipse HBuilder WebStrom Apatana
javascript的基本语法结构
HTML页面上1
2
3<script type="text/javascript">
Js 代码
</script>
基本语法
输出:1
2
3
4
5
6
7
8
9<script type="text/javascript">
//javascript的输出
//网页中输出文本内容
document.write("Hello JavaScript");
//弹框的形式输出
alert("Hello JavaScript");
//控制台中输出
console.info("Hello JavaScript");
</script>
JavaSctipt语法
变量
JavaScript是一种弱数据类型的编程语言
特点:变量没有类型
java:是一种强数据类型的语言
1 | String name = "hibiscidai"; |
javascript:是一种弱数据类型的语言
1 | var name = "hibiscidai"; |
注意:
-可以不用var关键字声明变量,如果不用var关键字声明变量,该变量将变为全局变量
-javascript的语言结束可以不加分号
数据类型
基本类型
字符串
javascript不区分字符与字符串
1 | //声明字符串 |
数字
javascript中不区分整数与浮点数
1 | //声明数字 |
布尔
- true | false
- 非0 | 0
- 非null | null
特殊的类型
NAN
not a numberunderfine
如果使用了没有定义的变量,那么这个变量的值为underfine
如果定义了变量没有赋初始值,那么之歌变量的值为underfineNull
定义变量后,手动赋值为null
基本类的特殊操作
- parseInt 把一个字符串类型的数据转化为整数
- typeof 确定变量的实际类型
1 | var a = "10"; |
对象类型
运算符 表达式
赋值运算符
=
算术运算符
+
-
*
/
%
1 | //算数运算符 |
比较运算符
>
<
>=
<=
!=
==
1 | var a = 10; |
注意:javascript中对比字符串没有
equals
方法的,只能用==
==
运算符 只比较数据内容 而不比较数据类型
===
运算符 既比较数据的类型 又比较数据的内容
逻辑运算符
&&
||
!
程序的流程控制
条件分支
1 | if () {} |
循环
1 | while () {} |
函数(function())
可以通过变量存储函数
1 | <script type="text/javascript"> |
匿名函数
1 | <script type="text/javascript"> |
iii. 匿名作为另一个函数的参数
1 | <script type="text/javascript"> |
定义了函数之后,在调用的时候可以不按照参数表的要求传递数据
Javascript函数没有重载
1 | <script type="text/javascript"> |
arguments内置对象,可以获得函数运行时的实际参数内容
作用:增加函数的健壮性
1 | <script type="text/javascript"> |
对象类型
javascript中没有累的概念(类似面向对象的编程语言)
自定义对象
1 | //创建学生对象 第一种方式 |
1 | //创建学生对象 第二种方式 |
内置对象
Javascript内部提供的对象
数组
不定长
类型可以不一致,更类似与java中的ArrayList集合
数组定义的两种方式:
(1)1
2
3var names = new Array();
names[0] = "hibiscidai";
names[1] = "dj741";
(2)1
var names = ["hibiscidai", "dj741", "hha"]
数组的API(方法)
方法 | 内容 | 补充 |
---|---|---|
length | 获得数组长度 | |
reverse | 倒序数组内容 | |
push | 压栈操作 | 等效于数组添加最后一个元素 |
pop | 弹栈操作 | 删除的最后一个元素 |
shift | 移除数组的第一个元素 | |
concat | 把两个数组连接起来(不常用) | |
join | 把一个数组得元素通过分割符连接成一个字符串(不常用) |
字符串
Javascript中的字符串不区分字符与字符串
第一种:var name=”hibiscidai”;
第二种:var name=new String(“hibiscidai”);
字符串API:
| 方法 | 内容 | 补充 |
| :———— | ————:| :—: |
|==或者===|字符串中内容对比|
|length|字符中的长度|
|charAt|获取某一个位置上的字符|
|indexOf()|获取一个子串第一次出现的位置|
日期
1 | <script type="text/javascript"> |
算术
Math.random();//获得随机数0-1之间
HTML对象
1 | <input type="text" name="name" /> |
事件
Javascript是事件驱动程序运行的语言
事件编程中的第一个案例
1 | <script type="text/javascript"> |
常见的事件句柄
句柄 | 事件 |
---|---|
所有标签基本都使用的事件句柄 | |
onclick | 单机事件 |
ondblclick | 双击事件 |
onmouseover | 鼠标浮上事件 |
onmouseout | 鼠标移出事件 |
onmousewheel | 鼠标滑动滚轮触发事件 |
onmousedown | 鼠标按下 |
onmouseup | 鼠标弹起 |
onmousemove | 鼠标移动 |
用于body标签中的事件句柄 | |
onload | 在整张Html页面内容全部显示后,自动运行该事件 |
onresize | 调整浏览器窗口大小的时候触发 |
onscroll | 滑动滚轮或者拖动浏览器右侧的进度条时触发 |
用于表单中的相关事件句柄 | |
onblur | 丢失焦点事件 |
onfocus | 获取焦点事件 |
onkeydown | 键盘按下触发的事件 |
onkeyup | 键盘弹起触发的事件 |
onchange | 针对于 < select > 当下拉列表中的内容改变时触发 |
onsubmit | 表单提交时触发的事件 |
事件模型
事件源:产生事件的标签
事件:单机 双击 鼠标以上。。。
监听 事件句柄触发后执行的程序
如何获得事件
1 | <script type="text/javascript"> |
获得了事件后就可以获取事件的类型
Event.type
获得事件产生的坐标
Event.clientX
Event.clientY
获取事件的源头(标签对象)
Event.target
阻止标签的默认行为
表单标签的默认行为
默认提交
1 | onsubmit="return true"; |
阻止
1 | onsubmit="return false"; |
超级链接的默认行为
默认发送请求
阻止
<a href="javascript:void(0)" />点击我 </a>
事件冒泡(buble)
特点:内部标签产生的事件,对外层标签产生了影响
解决:event.stopPropagation();
DOM[document object model | 文档对象模型]
什么是DOM(一种模型 + 一组API)
DOM把一个HTML网页看成一棵树,每一个HTML标签看成一个对象
31161
一组API:获得这棵树上边的HTML标签对象
作用:通过DOM的模型及相关方法,可以让HTML网页结构动起来
使网页结构动起来的手段:
改变标签的属性
如何获取标签对象(语法:标签 对象.属性)
1 | //第一种 |
改变标签的样式(语法:标签 对象.style.css 属性)
1 | function test1() { |
javascript动态修改样式时,如果css标签属性有 - ,则需把 - 去掉,其后的字母对象
特殊属性:
句柄 | 事件 |
---|---|
.parentNode | 父亲对象 |
.childNodes | 所有的孩子对象 |
.firstChild | 第一个孩子对象 |
.lastChild | 最后一个孩子 |
.nextSibling | 下一个兄弟 |
.previousSibling | 上一个兄弟 |
注意:回车代表着一个标签对象
获取一组标签对象
Var divs= document.getElementByTagName(“div”);
获取文本节点的内容 .data 或者 .nodeValue
增加新的标签内容
新建标签
1 | var div = document.createElement("div"); |
把创建出的标签放置正对应的位置上
句柄 | 事件 |
---|---|
parentNode.appendChild(“div”) | 把对应的标签对象放置在最后一个孩子所处的位置 |
parentNode.insertBefore(new,old) | 把对应的标签对象放置在旧的标签对象的前边 |
parentNode.replaceChild(new,old) | 用新标签替换旧的标签 |
parentNode.removeChild(old) | 删除一个标签 |
1 | //创建div标签对象 |
创建文本
1 | function creatediv() { |
innerHTML方法(语法:标签对象.innerHTML方法)
方法作用:
- 可以获得一个标签内部所有的内容
- 可以为一个标签内部 插入一组新的标签或者文本
注意:innerHTML在添加新的标签时,会把原有标签内部的内容替换掉
BOM(Browser Object Model 浏览器对象模型)
思想:浏览器相关内容 看做对象
42232
window对象 (浏览器窗口)
句柄 | 事件 | 备注 |
---|---|---|
window.alert(); | 提示框 | window独享的方法或属性 window. 可以省略 |
window.confirm() | 确认框 | 方法存在返回值 确定true 取消false |
window.open() | 打开一个新的页面 | |
window.setTimeOut() | 在一定时间之后自动执行某一种功能 | |
.nextSibling | 下一个兄弟 | |
.previousSibling | 上一个兄弟 |
1 | //例:"window."可以取消 |
document 对象 (网页对象)
document.write()
document.getElementById()
document.getElementByTagName()
document.createElement()
document.createTextNode()`form对象
代表form标签form.submit()
动态提交
1 | function test1() { |
select对象 < select 标签 > |option对象 < option 标签 >
句柄 | 事件 |
---|---|
Select.options | 获取所有的此select标签下的option标签对象 |
option标签对象.text | 获取option标签中的文本内容 |
option标签对象.value | 获取option标签中的value值 |
select.selectedIndex | 获得当前被选中的option标签 在options数组中的下标 |
级联菜单
46789
1 | <html> |
location对象(地址栏)
Location.href=”/XXXAction” 通过location发送请求
History对象(前进 后退按钮)
history.back();后退
history.forward();前进
js与jsp整合
a)js与jsp中 与在html网页中的应用一样
b)js中直接使用 jstl标签或者表达式以及struts标签
外部js文件
59301
(a)定义js文件
(b)外部文件的引入
1 | <script type="text/javascript" scr="js/my.js"> |
设置引入外部文件编码格式[charset=””]
1 | <script type="text/javascript" charset="gbk" scr="js/my.js"> |