一、DOM
1.1概述
·通过HTML DOM,可访问JavaScript HTML文档的所有元素。
·当网页被加载时,浏览器会创建页面的文档对象模型(Document Object Model)
·HTML模型被构造为对象的树
·有了DOM树,就可以通过树来查找节点(元素),找到元素就可以对元素进行操作(修改、删除、添加),还可以操作元素的样式
~JavaScript能够改变页面中的所有HTML元素。
~JavaScript能够改变页面中的所有HTML属性。
~JavaScript能够改变页面中的所有CSS样式。
~JavaScript能够对页面中的所有的事件做出反应。
1.1查找元素
查找元素(标签)有很多方式
~通过id查找元素
·document.getElementByld(“id属性值”);
·如果找到该元素,则该方法将以对象(在x中)的形式返回该元素。
·如果未找到该元素,则x将包含null。
~通过标签名查找元素
·方法:getElementsByTagName(“合法的元素名”);
·如果找到,返回的是数组。
~通过class查找元素
·方法:getElementsByClassName(“class属性的值”);
·如果找到,返回的是数组。
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Document</title>
</head>
<body>
<ul>
<li id="li-1" class="class-3">西瓜</li>
<li>草莓</li>
<li>葡萄</li>
<li>芒果</li>
</ul>
<div class="class-3">开</div>
<span class="class-3">心</span>
<hr/>
<button id="btn-1">根据id查找</button>
<button id="btn-2">根据标签名查找</button>
<button id="btn-3">根据class查找</button>
<script>
var btn1=document.getElementById("btn-1");
btn1.onclick=function(){
//通过id查找
var li1=document.getElementById("li-1");
console.log(li1);
}
var btn2=document.getElementById("btn-2");
btn2.onclick=function(){
//标签名,返回的是同名所有标签的数组
var liArr=document.getElementsByTagName("li");
console.log(liArr);
for(var i=0;i<liArr.length;i++){
console.log(liArr[i]);
}
}
//class
var btn3=document.getElementById("btn-3");
btn3.onclick=function(){
//类名,返回的是同类名所有标签的数组
var abc=document.getElementsByClassName("class-3");
console.log(abc);
for(var i=0;i<abc.length;i++){
console.log(abc[i]);
}
}
</script>
</body>
</html>
1.3元素内容的查找和设置
元素内容,是指标签开闭之间的内容(单标签用不成)。
<p>这就是内容</p>
<p><span>这就是内容</span></p>
查找和设置使用的是相同的属性
~innerHTML获得或设置标签的内容
~innerText获得或设置标签的内容
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Document</title>
</head>
<body>
<!-- <p id="p-1">p的内容</p> -->
<p id="p-1">
<span>p的内容</span>
</p>
<hr/>
<button id="btn-1">获得内容-innerHTML</button>
<button id="btn-2">获得内容-innerText</button>
<script>
var btn1=document.getElementById("btn-1");
var p1=document.getElementById("p-1");
btn1.onclick=function(){
var v=p1.innerHTML;
console.log(v);
}
var btn2=document.getElementById("btn-2");
btn2.onclick=function(){
var v=p1.innerText;
console.log(v);
}
</script>
</body>
</html>
上述代码结合下边的图片,我们可以知道innerHTML和innerText的区别
* innerHTML
* 能获得开闭标签之前的内容,包括html标签
*能在开闭标签之间设置内容,有标签会解析
* innerText
* 只能获得开闭标签之间的纯文本内容
*能在开闭之间设置内容,有标签也当字符串展现,不当标签
*============================================
*二者设置内容的共性:直接覆盖原值
<script>
var btn3=document.getElementById("btn-3");
btn3.onclick=function(){
//设置内容无返回值
p1.innerHTML="<span>这是新的内容!!!</span>";
}
var btn4=document.getElementById("btn-4");
btn4.onclick=function(){
//设置内容无返回值
p1.innerText="<span>这是新的内容!!!</span>";
}
</script>
上边可以看出,设置内容时innerHTML把span当作标签,innerText在这里只是把它当成文本内容
1.4元素属性的查找和设置
元素属性,是指开标签内的属性,通过dom对象直接调用操作。
eg,
·domObj.id
·domObj.name
·domObj.value
·...
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Document</title>
</head>
<body>
<a id="a-1" href="http://www.baidu.com" target="_self">超链接</a>
<hr/>
<button id="btn-1">获得a标签的属性</button>
<button id="btn-2">设置a标签的属性</button>
<script>
var btn1=document.getElementById("btn-1");
btn1.onclick=function(){
var a1=document.getElementById("a-1");
/**
*获得标签的属性,直接通过标签对象.属性名即可
*/
var id=a1.id;
var href=a1.href;
var target=a1.target;
console.log(id);
console.log(href);
console.log(target);
}
var btn2=document.getElementById("btn-2");
btn2.onclick=function(){
var a1=document.getElementById("a-1");
/**
*设置标签的属性,直接通过标签对象.属性名=值即可
*/
a1.href="http://www.4399.com";
a1.target="_blank";
}
</script>
</body>
</html>
1.5元素CSS样式的查找和设置
元素css样式的查找和设置,是指标签中的style的属性值的获得和设置
·获得属性值
元素对象.style.属性
·设置属性值
元素对象.style.属性=""
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Document</title>
</head>
<body>
<div id="div-1" style="background-color: red;">块</div>
<hr/>
<button id="btn-1">获得div的css样式</button>
<button id="btn-2">设置div的css样式</button>
<script>
var btn1=document.getElementById("btn-1");
var div=document.getElementById("div-1");
btn1.onclick=function(){
//获得所有样式
var style=div.style
console.log(style);
//获得指定的样式
var bgc=div.style.backgroundColor;//单独获得背景颜色
console.log(bgc);
}
var btn2=document.getElementById("btn-2");
btn2.onclick=function(){
//设置单独的样式
div.style.backgroundColor="green";
//设置样式
div.style="background-color:yellow;width:50px;height:50px";
}
</script>
</body>
</html>
二、BOM-location
·表示当前浏览器的链接地址
·可以读取地址
·可以修改地址
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Document</title>
</head>
<body>
<button id="btn-1">获得location信息</button>
<button id="btn-2">设置location信息</button>
<script>
var btn1=document.getElementById("btn-1")
btn1.onclick=function(){
var location=window.location;
console.log(location);
}
var btn2=document.getElementById("btn-2")
btn2.onclick=function(){
//重点!!!
//改变当前页面跳转的指定路径
window.location.href="http://www.baidu.com";
}
</script>
</body>
</html>