JavaScript特性
① 解释型语言。JavaScript是一种解释型的脚本语言,C、C++、Java等语言先编译后执行, 而JavaScript是在程序的运行过程中逐行进行解释,不需要被编译为机器码再执行。
② 面向对象。JavaScript是一种面向对象的脚本语言,它不仅可以创建对象,也能使用现有的对象。
③ 类C和Java的语法。JavaScript的语法结构与C和Java很像,像for、if、while等语句和Java的基本上是一模一样的。
④ 简单。JavaScript语言中采用的是弱类型的变量类型,对使用的数据类型未做出严格的要求,是基于Java基本语句和控制的脚本语言。(补充:Java是强类型的语言)
⑤ 动态性。所谓的动态性,可以暂时理解为在语言中的一切内容都是不确定的。比如一个变量,这一刻是个整数,下一刻可能会变成字符串了。
⑥ 跨平台性。JavaScript脚本语言不依赖于操作系统(Java依赖于JVM),仅需要浏览器的支持。因此一个JavaScript脚本在编写后可以带到任意机器上使用,前提是机器上的浏览器支持JavaScript脚本语言。目前JavaScript已被大多数的浏览器所支持。
⑦ 安全性。JavaScript是不允许直接访问本地硬盘的。
可以干什么
1,使网页具有交互性,例如响应用户点击,给用户提供更好的体验
2,可以处理表单,检验用户的输入,并提供及时反馈节省用户时间。例如,表单中要你输入电子邮箱而你却输入一个手机号,那么应该给你一个提醒。
3,还可以根据用户的操作,动态的创建页面。例如,发邮件时,添加附件操作。
4,设置cookie,cookie是存储在浏览器上的一些临时信息,5.可以修改HTML结点的数据,修改样式(CSS)
javascript的数据类型
基本数据烈性
数值型:number
字符串:string
布尔型:boolean
null型:null
undefined:undefined(未定义)
对象类型
函数对象:function(){}
数组对象:var arry = [] | new Array()
一般对象:new Object | {}
判断数据类型:typeof()js中==与===区别
==:比较的值是否相等
===:比较的值和类型是否相等(全等)特殊值问题
undefined:表示未定义,Undefined类型只有一个值,即特殊的 undefined 。所有的js中的变量在未初始化的时候默认值都是undefined。
typeof(undefined)结果是undefined。
null:表示空值,Null类型只有一个值,即为null。
从语义上看 null表示的是一个空对象。所以使用 typeof检查 null会返回一个Object。
undefined是由null值衍生出来的,所以undefined和null是否相等,会返回true。
NaN:not a number(非数值),在数学运算中对数值进行计算时,没有结果返回,则返回NaN
JavaScript的命名规则跟java差不多,运算符也一样,多了一个 ===,==,!==还有逻辑运算符、流程控制语句,循环(没有foreach循环)
数组:
js中的数组
数组定义
var arr = [];
var arr2 = new Array("s",true,12);
数组调用
使用下标,从0开始
数组可以自动扩容,未赋值的结果为:undefined
函数:
函数的声明:
1. function 函数名([i,k]){}
2. function([i,k]){}:匿名函数函数调用
js中调用函数时,不检查参数的匹配。
有名函数
形参>实参:
number:NaN
string:值+undefined
形参<实参:自动忽略多余的参数
匿名函数调用
直接关联事件
使用函数的引用,调用函数(如没有函数引用,声明变量指向函数)
arguments跟java中的可变形参非常类似,可以传递不确定个数的实参到函数中
NaN:not a number
js中不允许函数重载与重写
注意:调用函数时,使用函数名()与函数名的区别
函数名():触发函数
函数名:使用函数的引用函数的隐形参数:arguments,当实参>形参时剩余的形参隐藏在arguments里面,(其实所有传递的数据都在其中)
js中对象
定义对象
1. var obj = new Object()
obj.name = "zs";
obj.stuty = function(){}
2. json格式定义风格
var obj2 = {
name : "yuanyuan",
age : 18,
study : function(){}
}
调用对象
对象名.属性
对象名.函数名()
this:指向的是调用当前函数的对象。
js中有三种现成的对象
内置对象:Array,Math,Date
浏览器:window,location
location:操作url(地址栏)
DOM对象
document
var obj={
name:"111",
age:18,
study:function(){
alert("好好学习,天天向上");
},
info:function(){
alert("46");
}
}
alert(obj.name);
obj.study();
obj.info();
js的事件:
函数名 | 说明 |
---|---|
onload | 加载完成事件,常用于页面加载完成之后做的一些功能 |
onclick | 单击事件,常用于用户点击视图的时候触发功能 |
onblur | 失去焦点事件,常用于失去焦点的时候触发功能 |
onchange | 内容发生改变事件,常用于下拉列表和文本输入框内容发生改变时 |
onsubmit | 表单提交事件,常用于表单提交事件的时候做一些表单验证的工作 |
<head>
<script type="text/javascript">
window.onload = function() {
var btnEle = document.getElementById("btn");
btnEle.onclick = function() {
alert("hello");
};
};
</script>
</head>
<body>
<button id="btn">点我</button>
</body>
window.onload加载事件,是在前端的页面都加载完毕之后进行加载的,只能有一个存在,否则就会覆盖。
取消默认行为:return false:跳出函数(就近原则),返回结果。,例如取消链接的默认跳转,取消表单的提交
js的DOM对象操作
DOM查询
基于整个文档查询
document.getElementById() //根据ID返回一个对象
document.getElementsByTagName() //根据元素返回的是所有子节点数组
document.getElementsByName() //根据名称返回一个数组
基于元素节点查询
子节点
element.childNodes; //返回的是数组结点
element.firstChild; //返回第一个结点(注意:当IE>8时,有空格回车也算一个结点,
element.lastChild; //返回最后一个结点
element.getElementsByTagName() //根据名称返回当前元素的所有字节点
父节点
element.parentNode
兄弟节点
element.previousSibling //上一个兄弟结点
element.nextSibling //下一个兄弟结点
DOM操作文本
.innerText:获取成对标签内部的文本值
.innerHTML:获取成对标签内部的HTML值
DOM操作属性
- 读取属性值:**元素对象.属性名**
- 修改属性值:**元素对象.属性名=新的属性值**
.value属性:获取表单项的value属性值