写在前面
本文是对javascript的提点,对象之列举出常用对象和附带的常用方法,不展开特别详细的论述,详细的全面的方法可以去查文档,所以 需要 参考文档 (点击这儿下载)的帮助
第一篇讲述的是javascript的语法 ; 本篇讲述javascript对象(包含javascript基本对象、bom对象、dom对象)、第三篇附上javascript案例(包括HTML表单验证、动态时间、下拉列表左右选择、鼠标点击效果、省市联动等)
一、javascript本地对象和内置对象
该对象在参考文档_W3School手册(参考文档在本文开头有下载链接)中有详细描述,位于文档正文 横标题javascript——-左栏课程表——–javascript—JS参考手册—-javascript对象—-javascript对象
(一)、String对象
创建String对象:var str="abc" ;
常用属性:length
常用方法:
与HTML相关方法:
- bold( ): 加粗
- fontcolor( ) :设置字符串的颜色
- fontsize( ):设置字符串的大小
- link( ): 将字符串显示成超链接
- sub() sup ( ) : 小标和上标
与javal类似方法(便于记忆):
- concat ( ): 连接字符串
- charAt ( ): 返回指定位置的字符串,字符不存在,返回空字符
- indexOf( ): 返回字符串位置,不存在,返回-1
- split( ) : 切分字符串,成数组
- replace( ):替换字符串 ,需要传递两个参数
- substr( ) 和 substring ( ):截取两个字符之间的字符串
<script type="text/javascript">
//length属性
var str = "abcde";
document.write(str.length);
//bold方法
var str1 = "abcdef";
document.write(str1.bold());
//fontcolor
var str2 = "abcdef";
document.write(str2.fontcolor("red")); //颜色为红色
//fontsize
var str3 = "abcdef";
document.write(str3.fontsize(5));
//link
var str4 = "abcdef";
document.write(str4.link("hello.html"));//加超链接
//sub 和sup
var s1 = "100";
var s2 = "200";
var s3 = "300"
document.write(s1.sub());
document.write(s3);
document.write(s2.sup());
</script>
<script type="text/javascript">
//concat方法
var str1 = "abc";
var str2 = "dfg";
document.write(str1.concat(str2)); //链接两个字符串
//charAt方法
var str3 = "abcdef";
document.write(str3.charAt(3)); //返回3号位置的字符d,字符不存在,返回空字符
//indexOf方法
var str4 = "abcdef";
document.write(str4.indexOf("e")); //字符不存在,返回-1
//split方法
var str5 = "a-b-c-d";
var arr1 = str5.split("-"); //通过-号,进行切分,组成数组,数组原酸为a,b,c,d
document.write("length: "+arr1.length); //长度为4
//replace
var str6 = "abcd";
document.write(str6);
document.write("<br/>");
document.write(str6.replace("a","P")); //将字符串中的a替换成P
//substr substring
var str7 = "abcdefghiklmn";
//document.write(str7.substr(4,5)); //efghi 从第四位开始,向后截取五个字符
document.write(str7.substring(3,5)); //de 从第几位开始到第几位结束 [3,5)
</script>
(二)、Array对象
创建数组: var arr1 = [1,2,3];
var arr2 = new Array(3);
var arr3 = new Array(1,2,3);
常用属性:length
常用方法:
- concat ( ): 数组的连接
- join( ):根据指定的字符分割数组
- push( ):向数组末尾添加元素,返回数组的新的长度
- pop( ):表示 删除最后一个元素,返回删除的那个元素
- reverse( ):颠倒数组中的元素的顺序
<script type="text/javascript">
//concat()方法
var arr11 = [1,2,3];
var arr12 = [4,5,6];
document.write(arr11.concat(arr12)); //链接两个数组
//join方法
var arr13 = new Array(3);
arr13[0] = "a";
arr13[1] = "b";
arr13[2] = "c";
document.write(arr13.join("-")); //用-号连接a,b,c,返回字符串a-b-c
//push方法
var arr14 = new Array(3);
arr14[0] = "张三";
arr14[1] = "李四" ;
arr14[2] = "王五";
arr14.push("独孤求败");//进栈, 数组第四个元素是独孤求败
var arr15 = ["aaa","bbb"];
arr15.push(arr14); //将arr14整个数组作为arr15的第3个元素
//pop方法
document.write("<hr/>");
var arr16 = ["张三","李四","王五"];
arr16.pop()); //将王五剔除数组
//reverse方法
var arr18 = [189,"张三","李四","王五"];
arr18.reverse(); //数组顺序颠倒,王五、李四、张三、189
</script>
(三)、Data对象
常用方法:
- 获取当前时间 :
var date = new Date();
- getFullYear():得到当前的年
- getMonth():获取当前的月
- getDay():星期,返回的是 (0 ~ 6)
- getDate():得到当前的天 1-31
- getHours():获取小时
- getMinutes():获取分钟
- getSeconds(): 获取秒
- getTime(): 获取毫秒 , (可以使用毫秒数处理缓存的效果)
- toLocaleString( ) ;将Date对象转换成字符串,可以显示成中国人习惯的时间格式
<script type="text/javascript">
//获取当前时间
var date = new Date();
document.write(date); //
//转换成习惯的格式
document.write(date.toLocaleString());
//得到当前的年
document.write("year: "+date.getFullYear());
(四)、Math对象
常用方法:
- ceil(x): 向上舍人
- floor(x):向下舍人
- ound(x):四舍五入
- random():得到0~1之间的随机数(伪随机数)
- pow(x,y) : x的y次方
var aa = 50.89;
document.write(Math.ceil(mm));
//random方法
//得到0-9的随机数
document.write(Math.floor(Math.random()*10));
//pow(x,y) 2的4次方
document.write(Math.pow(2,4));
二、Browser(BOM)对象
该对象在参考文档_W3School手册(参考文档在本文开头有下载链接)中有详细描述,位于文档正文 横标题javascript——-左栏课程表——–javascript—JS参考手册—-javascript对象—-Browser对象
broswer object model:浏览器对象模型
(一)、navigator对象
获取客户机的信息(浏览器的信息)
- navigator.appName : 获取浏览器的名字信息
(二)、screen对象
获取屏幕的信息
- screen.width : 屏幕宽度
- screen.height : 屏幕高度
(三)、location对象
请求URL地址
常见属性: href
<script type="text/javascript">
//navigator
document.write(navigator.appName); //输出浏览器信息
//screen对象
document.write(screen.width);
document.write(screen.height);
//location对象
//href
function href1() {
location.href = "h.html"; //点击HTML页面按钮,跳转到h.hmtl页面中
}
document.write(location.href); //获取请求的URL地址
</script>
(四)、history对象
请求的url的历史记录 (看以查看文档,页面过于繁多,不再演示)
- history.back(); history.go(-1);
- history.forward(); history.go(1);
(五)、window对象
窗口对象,这个对象是顶层对象,加上上述等所有的bom对象都是在window里面操作,即 window.xxxx
,一般window省略
常用方法:
- window.alert() : 页面弹出一个框,显示内容
- confirm(): 确认框提示框
- prompt(): 输入的提示框
- open() : 打开一个新的窗口
- close(): 关闭窗口(浏览器兼容性比较差)
- 做定时器
- setInterval(“js代码”,毫秒数) :表示多少秒,执行一次js代码
- setTimeout(“js代码”,毫秒数) :表示在毫秒数之后执行,但是只会执行一次
- clearInterval(): 清除setInterval设置的定时器
- clearTimeout() : 清除setTimeout设置的定时器
<script type="text/javascript">
//演示confirm方法
var flag = window.confirm("是否删除?");
if(flag == true) {
alert("删除成功");
} else {
alert("删除失败");
}
//演示prompt方法
window.prompt("please input : ", " 输入框默认内容");
//open方法,点击HTML页面按钮,在宽高说明的新窗口中打开指定链接
function open1() {
window.open("h.html","","width=200,height=100");
}
window.close();//关闭当前窗口
</script>
三、 DOM 对象
该对象在参考文档_W3School手册(参考文档在本文开头有下载链接)中有详细描述,位于文档正文 横标题javascript——-左栏课程表——–javascript—JS参考手册—-javascript对象—-HTML DOM对象
(一)、document对象
作用于整个文档,对整个文档中的标签都有效用
常用方法:
- write( )方法 : 像页面输出变量或 html代码
- getElementById( ):通过id得到元素(标签),返回的是一个对象,对象名.属性名可以得到标签里面的值
- getElementsByName( ) : 通过标签的name的属性值得到元素(标签),返回的是一个对象数组
- getElementsByTagName(“标签名称”): 通过标签名称得到元素(标签),返回的是一个对象数组
<body>
<input type="text" id="id1" name="name1"/>
<input type="text" name="name2" value="aaaa"/><br/>
<input type="text" name="name2" value="bbbbb"/><br/>
<input type="text" name="name2" value="cccc"/><br/>
<script type="text/javascript">
//write方法
var str = "abc";
document.write(str);
document.write("<hr/>");
//使用getElementById得到input标签
var input1 = document.getElementById("NAME1"); //input1是一个对象
document.write(input1.name); //得到name的值
input1.value = "bbbbb"; //给input里面设置value值
//使用getElementsByName得到input标签
var input2 = document.getElementsByName("name2");//input2是一个对象数组
for(var i=0;i<input1.length;i++) { //遍历数组得到value值
var input21 = input1[i]; //每次循环得到input对象,赋值到input21里面
alert(input1.value); //得到每个input标签里面的value值
}
//使用getElementsByTagName得到input标签
var input3 = document.getElementsByTagName("input"); //input3是对象数组
for(var i=0;i<input3.length;i++) { //遍历数组,得到value值
var input31 = input3[i];
alert(input1.value);
}
</script>
</body>
另外,document对象还有一些方法,如: createElement( )等,这儿不做详细列举,如果有需要,可在参考文档_网页开发手册(参考文档在本文开头有下载链接)中,进行索引,查找关键字“ document” ,双击document, 显示第一个结果,在正文成员表的方法中查看。
(二)、element对象
作用于HTML的元素,只在标签元素范围起作用
要对element对象进行操作,首先要获取到element
几个有关获取的方法:
- getAttribute( ) :获取元素属性的值 ( 对于document获取的方法,这是新方法)
- setAttribute( ); :设置属性的值
- removeAttribute( ); : 从元素中移除指定属性
- getElementsByTagName( ): 获取标签下面自标签的唯一方法
<body>
<input type="text" name="name1" id="id1" value="aaaa"/>
<ul id="ulid1">
<li>aaaaaa</li>
<li>bbbbbb</li>
<li>cccccc</li>
</ul>
<script type="text/javascript">
//获取input标签,方法一: 利用document对象
var input1 = document.getElementById("id1");
alert(input1.value);
//获取input标签,方法二: 利用element对象的getAttribute()方法
alert(input1.getAttribute("value"));
//设置属性
input1.setAttribute("class","haha");
alert(input1.getAttribute("class"));
//移除元素的一个属性
input1.removeAttribute("value");
//获取标签(ul)下的所以子标签(li )
var ul1 = document.getElementById("ulid1"); //先获取标签
var li1 = ul1.getElementsByTagName("li"); //在获取子标签,li1是一个对象数组
</script>
</body>
(三)、node对象
作用于节点,只在节点范围内起作用
常用属性:
- 标签节点:
- 标签. nodeType : 1
- 标签.nodeName: 大写标签名称
- 标签.nodeValue :null
- 属性节点:
- 属性.nodeType : 2
- 属性.nodeName : 属性名称
- 属性.nodeValue : 属性的值
- 文本节点:
- 文本.nodeType : 3
- 文本.nodeName : #text
- 文本.nodeValue ; 文本内容
常用方法:
<body>
<span id="spanid">你好啊,你好呀</span>
<script type="text/javascript">
//获取标签对象
var span1 = document.getElementById("spanid"); //这是document对象中的方法
alert(span1.nodeType); // 1
alert(span1.nodeName); // SPAN
alert(span1.nodeValue); // null
//属性
var id1 = span1.getAttributeNode("id"); //这是element对象中的方法,可以去查文档(本文没有讲述)。
alert(id1.nodeType); // 2
alert(id1.nodeName); // id
alert(id1.nodeValue); // spanid
//获取文本
var text1 = span1.firstChild;//这是上述Node对象中的方法
alert(text1.nodeType); // 3
alert(text1.nodeName); // #text
alert(text1.nodeValue); // 内容
</script>
</body>
<body>
<ul id="ulid">
<li id="li1">aaaaa</li>
<li id="li2">bbbbb</li>
<li id="li3">ccccc</li>
<li id="li4">ddddd</li>
</ul>
<script type="text/javascript">
//得到li1
var li1 = document.getElementById("li1");
//得到ul
var ul1 = li1.parentNode;
alert(ul1.id);
//获取ul的第一个子节点 id=li1
//得到ul
var ul1 = document.getElementById("ulid");
//第一个子节点
var li1 = ul1.firstChild;
alert(li1.id);
//得到最后一个子节点
var li4 = ul1.lastChild;
alert(li4.id);
//获取li的id是li3的上一个和下一个兄弟节点
var li3 = document.getElementById("li3");
alert(li3.nextSibling.id);
alert(li3.previousSibling.id);
</script>
</body>
(四)、innerHTML对象
这个属性不是dom的组成部分,但是大多数浏览器都支持的属性
第一个作用:获取文本内容
第二个作用:向标签里面设置内容(可以是html代码)
<body>
<span id="id1">你好</span>
<div id="id2">
</div>
<script type="text/javascript">
//获取span中的文本内容
var span1 = document.getElementById("sid");
alert(span1.innerHTML);
//向div里面设置内容 <h1>AAAAA</h1>
//获取到div
var div11 = document.getElementById("div11");
//设置内容
//div11.innerHTML = "<h1>AAAAA</h1>";
//向div里面添加一个表格
//var tab = "<table border='1'><tr><td>aaaaaa</td></tr><tr><td>bbbbbb</td></tr><tr><td>cccccc</td></tr></table>";
var tab = "<table>";
tab += "</table>";
//相当于 var tab = "<table></table>";
div11.innerHTML = tab;
</script>
</body>
四、关于 DOM的说明
说明
该说明在参考文档(参考文档在本文开头有下载链接)中有详细描述,位于文档正文 横标题javascript——-左栏课程表——–HMTL DOM—HTML DOM
DOM :document object model (文档对象模型)
- 文档是: 超文本文档 / 超文本标记文档(HTML、XML)
- 对象 :提供了属性和方法 (第三个标题就是对DOM对象的讲解)
- 模型 :使用属性和方法操作超文本标记型文档
即: 使用dom里面提供的对象,使用方这些对象的属性和方法,对标记型文档或超文本标记文档进行操作
根据文档的不同,DOM标准分为三个部分:
- 核心 DOM - 针对任何结构化文档的标准模型
- XML DOM - 针对 XML 文档的标准模型
- HTML DOM - 针对 HTML 文档的标准模型
(本文中的DOM对象主要是对HTMLDOM的讲解,XML DOM 会在以后的文章中阐述) 以下也是针对HTML DOM 到底是什么 进行说明阐述
HTM L DOM 主要是关于如何获取、修改、添加和删除 HTML 元素的标准 (这些方法在标题三 DOM 对象中都有讲解 ),当网页被加载的时候,浏览器会创建页面的文档对象,文档对象模型(HTML DOM)被构造为对象的树(树形结构如下图所示)。即:
HTML中的所有内容都是节点,DOM 是被视为节点树的HTML
整个文档是一个文档节点 、整个HTML对象是一个元素节点、元素内的文本内容是文本节点、每个HTML属性是属性节点、注释是注释节点
通过可编程的模型,javascript可以来创建动态的HTML,对HTML的元素和属性以及对CSS的样式和所有事件作出反应(这些方法在本文DOM对象中有讲解)
DOM 对HTML文档进行操作,解析HTML过程是 根据html的层级结构,在内存中分配一个树形结构,需要把html中的每部分封装成对象(document对象:整个文档 ; element对象:标签对象 ; 属性对象 ;文本对象; Node对象)