全局函数:JS中提供部分的函数,不需要任何对象,可以直接通过函数名在代码使用。
URL:统一资源定位符
浏览器地址栏中输入的信息
http://www.itheima.com:80/index.jsp?name=zhangsan&password=123
URI:统一资源标识符
URI表示的资源数据不具体 index.jsp 称为一个URI
BOM:browser object model 浏览器对象模型,把当前的浏览器看成一个对象。
通过浏览器对象可以获取和浏览器相关的所有信息。
1.window对象:
是javascript层级中的顶层对象
Window对象有浏览器在加载到body或者frameset标签的时候由JS引擎自动创建。我们在JS代码中可以直接使用,使用window。
window对象中的属于:
专门获取window中包含的其他对象:
document 获取浏览器加载的html文件对象
history 获取浏览器中的历史记录对象
location 浏览器的地址栏对象
navigator 浏览器对象
screen 浏览器窗口在显示器屏幕上的相关对象
setInterval("函数名",毫秒值)
在指定的毫秒值之后重复执行当前指定的这个函数
clearInterval()
清除重复执行的动作
setTimeout("函数名",毫秒值)
在制定的毫秒值后只执行一次某个函数
clearTimeout()
清除指定的执行动作
open() 打开一个新窗口
close() 关闭打开的新窗口
2.history对象:
它是javascript对象,不是html dom对象
History对象是有javascript runtime engine 自动创建,由一系列的URL组成的,这些URL是浏览器口内已访问的URL。
唯一保持使用的功能只有back(),forward()和go()方法。
3.Location对象:
包含当前URL的信息
4.navigator对象:
可以访问系统,浏览器的信息。
DOM:Document Object Model 文档对象模型。
文档:html文件。但是后期也可能是xml文档
当浏览器把一个html文件加载到内存中,这时就会在内存中得到一个关于当前这个html文件的对象,这个对象就是DOM对象。
DOM对象的标准:由W3C指定,它规定如何通过JS技术来解析当前加载的这个html文件中的所有标签,以及标签中的属性,还有标签中封装的文本数据。
当我们去解析一个html文件的时候,解析到的标签称为标签对象(元素节点)、标签上的属性称为属性对象(属性节点)、标签中的文本称为文本对象(文本节点)。
DOM获取元素(标签)节点:
getElementById():
是根据页面上的标签的id属性值。获取当前某个标签对象
当获取到一个html页面中的标签对象之后,当前这个标签对象的具体操作需要查阅DHTML文档
getElementsByName() :
根据页面上标签上的name属性的值,获取当前页面上的标签对象
由于标签的name属性的值可能重复,因此获取到的一个数组
getElementsByTagName():
根据标签的名称获取标签对象,由于页面上会出现同名的标签,因此获取到一定也是一个数组
改变 HTML 输出流:
在 JavaScript 中,document.write() 可用于直接向 HTML 输出流写内容。
改变 HTML 内容:
ent.getElementById(id).innerHTML=new HTML
改变 HTML 属性:
document.getElementById(id).attribute=new value
改变 HTML 样式:
document.getElementById(id).style.property=new style
HTML DOM 事件
onclick=JavaScript
给页面上的标签绑定事件对应的函数的2种方式:
1、直接在页面上的标签上书写事件名称,然后给名称的属性值绑定JS函数名
2、在页面加载完成之后,通过js和dom技术获取到这个标签对象,然后动态给这个标签绑定事件
<script type="text/javascript">
//直接在页面上的标签上绑定事件
function _click(){
var input = document.getElementById("username");
if( input.value == "请输入用户名"){
input.value="";
}
}
//动态的给页面上的标签绑定事件
//必须在页面架子完成之后绑定事件
/*
JS中的正则对象:
JS中创建正则对象可以直接new,还可以使用/正则表达式/
var reg = new RegExp("正则表达式");
var reg2 = /正则表达式/;
*/
window.onload = function(){
document.getElementById("username").onblur = function(){
//在事件中可以使用this关键字,this表示的是当前发生事件的哪个标签对象
var value = this.value;
var reg = new RegExp("^\\w{6,12}$");
if( reg.test(value) ){
document.getElementById("nameSpan").innerHTML = "用户名正确".fontcolor("green");
}else{
document.getElementById("nameSpan").innerHTML = "用户错误".fontcolor("red");
}
}
}
</script>
function demo(){
//获取页面上的div标签对象
var div = document.getElementById("div");
//div.innerHTML = "添加数据";
//使用dom技术动态先在内存中创建出一个文本对象
var text = document.createTextNode("数据");
//把文本标签对象条件到div中
div.appendChild(text);
}
function demo2(){
var div = document.getElementById("div");
//div.innerHTML = "<a href='http://www.itheima.com'>黑马</a>";
//创建a标签对象
var a = document.createElement("a");//<a></a>
a.innerHTML = "黑马"; //<a>黑马</a>
//给a标签上添加属性
a.setAttribute("href","http://www.itheima.com");
//<a href='http://www.itheima.com'>黑马</a>
div.appendChild(a);
}
//删除页面上的id为two 的 div
function demo(){
var two = document.getElementById("two");
//删除的时候必须获取当前标签的父标签,才能删除自己
var body = two.parentNode;
//删除当前div标签对象
//获取 id为 one的div 使用兄弟标签获取
var one = two.previousSibling;
body.removeChild(one);
}
//替换
function demo2(){
//使用id为one的div替换id为two的div
var two = document.getElementById("two");
var one = document.getElementById("one");
//获取父标签
var body = two.parentNode;
body.replaceChild(one, two);
}
//克隆替换
function demo3(){
//使用id为one的div替换id为two的div
var two = document.getElementById("two");
var one = document.getElementById("one");
//获取父标签
var body = two.parentNode;
//克隆出id为one的div标签
var cloneOne = one.cloneNode(true);
body.replaceChild(cloneOne, two);
}
JSON格式的数据表现形式:
第一种格式:
{
key:value,
key:value,
key:value
}
JSON格式中的数据的key必须是字符串。value值可以是任意类型的数据
第二种格式:
[
{ key:value , key:value },
{ key:value , key:value },
{ key:value , key:value }]
/*
json的第一种格式:
var json = {key:value,key:value}
可以根据指定的json对象,调用它的key,得到对应的value
调用的方式:
格式1:对象.key 获取到key对应的value
格式2:对象["key"] 获取到key对应的value
如果要遍历json个数的所有数据,需要使用循环for in循环
====================================================
Java中的foreach 遍历容器:
for( 容器中的数据类型 变量名 : 容器名 ){
变量空间中保持的是容器中的某个元素数据
}
====================================================
JS中的for in格式
for( var 变量 in 数组|对象|json ){
如果是数组的话,变量是数组的下标
如果是json个数数据,变量是key值
如果是对象,变量是对象中的某个属性或者方法名
}
var arr = [4,2,7,9,0,11];
for( var i in arr){
alert(arr[i]);
}
*/
var json = {
"name":"林青霞",
"age":26,
"address":"东莞",
"sex":"不详",
"student":{
"name":"风清扬",
"age":32,
"address":"西安",
}
};
//for in循环是用来遍历对象或json的
for( var j in json ){
document.write(j +":"+json[j]+"<br/>");
for( var i in json[j] ){
document.write(i +":"+json[j][i]+"<br/>");
}
}
var json2 = [
{"name":"黑马",
"age":"5"}
];
alert(json2[0].name);
注意:var j ; json.j;//这格式是错误的,j是变量,不能这样使用json.j访问该json的属性值。