document.getElementById(‘time’);
dir可以打印出该对象结构
获取的是一个对象
举例
<div id="time">2019</div>
<script>
var time=document.getElementById('time');
console.log(time);
console.log(typeof time);
console.dir(time);
</script>
通过getElementsByTagName获取某类标签。
<body>
<ul>
<li>1</li>
<li>2</li>
<li>3</li>
<li>4</li>
<li>5</li>
</ul>
<ol id="ol">
<li>1</li>
<li>2</li>
<li>3</li>
<li>4</li>
<li>5</li>
</ol>
<script>
//1.返回的是 获取过来元素对象的集合 以伪元素形式存储
var lis=document.getElementsByTagName('li');
console.log(lis)
for (var i=0;i<lis.length;i++){
console.log(lis[i]);
}
//获取ol中的小li
var lis2=document.getElementById('ol');
for (var i=0;i<lis.length;i++){
console.log(lis2.getElementsByTagName('li'));
}
//页面中只有一个ol时获取的是伪数组形式,该伪数组是没有内容的,需要指定
//伪数组中的元素才可以获取到li
var lis3=document.getElementsByTagName('ol');
console.log(lis3[0].getElementsByTagName('li'));
</script>
</body>
通过getElementsByClassName获取到类名,通过querySelector获取到body中第一个元素的值
<body>
<div>
<p class="hello">你好</p>
<p class="hello">hello</p>
</div>
<ol>
<li></li>
</ol>
<script>
var hello=document.getElementsByClassName('hello');
console.log(hello);
var div=document.querySelector('div');
console.log(div);
var p=document.querySelector('.hello');
console.log(p)
</script>
</body>
效果如图
querySelectAll获取所有相关元素
document.querySelectAll('');
举例
<body>
<div>
<p class="hello">你好</p>
<p class="hello">hello</p>
</div>
<script>
//querySeletorAll返回指定选择器的所有元素对象集合
var allHello = document.querySelectorAll('.hello');
console.log(allHello);
</script>
</body>
获取body元素可以直接使用document.body形式获取
<body>
<script>
var body=document.body;
console.log(body);
</script>
</body>
事件三要素:
1.获取事件源
2.绑定事件 注册事件
3.添加事件处理程序
举例
<body>
<div>11111111</div>
<script>
var body=document.body;
console.log(body);
var div=document.querySelector('div');
div.onclick = function (e){
alert('我被击中了');
console.log(e)
}
</script>
</body>
改变事件内容
<button type="button">改变事件内容</button>
<div>11111111</div>
var button=document.querySelector('button');
button.onclick = function (){
div.innerText="2222222";
}
<div>
<button id="bird">鸟</button>
<button id="cat">猫</button>
</div>
<input id="input" value="输入内容" type="text">
<div id="box">
<img width="860" height="540" src="../first/image/bird.jpg" id="img">
<i class="close-btn" id="close-btn">x</i>
</div>
<script>
var bird=document.getElementById('bird');
var cat = document.getElementById('cat');
var img=document.getElementById('img');
bird.onclick=function (){
img.src='../first/image/bird.jpg'
input.value="🐱"
}
cat.onclick = function (){
img.src='../first/image/cat.jpg'
input.value="🐕"
}
closeBtn.onclick = function (){
alert("111111")
box.style.display='none';
}
</script>
显示隐藏文本框内容
<body>
<input type="text" value="手机">
<script>
//1.获取元素
var text=document.querySelector('input');
//2.注册事件 获得焦点事件
text.onfocus = function (){
if (this.value==="手机"){
this.value='';
}
this.style.color='#333';
//设置四个边框
this.style.outline='0';
}
//3.注册事件 失去焦点事件 onblur
text.onblur = function (){
if (this.value===''){
this.value="手机";
}
}
//失去焦点把文本框颜色变浅
this.style.color='#999';
</script>
</body>
通过className修改样式
<style>
.purple{
width: 100px;
height: 100px;
background-color: purple;
border: 2px solid gray;
border-radius: 20px;
text-align: center;
line-height: 100px;
}
</style>
<body>
<div className="text">文本</div>
<script>
var div=document.querySelector('div');
div.onclick =function (){
//className会覆盖原来的样式所以只需要把原先样式加上就好
this.className='text purple';
}
</script>
</body>
点击后效果
改变border
<body>
<button>按钮1</button>
<button>按钮2</button>
<button>按钮3</button>
<button>按钮4</button>
<button>按钮5</button>
<script>
<!-- 1.获取所有按钮元素-->
var btns=document.getElementsByTagName('button');
for (var i=0;i<btns.length;i++){
btns[i].onclick = function (){
for (var i=0;i<btns.length;i++){
btns[i].style.backgroundColor='';
btns[i].style.border='2px outset buttonbar'
}
this.style.backgroundColor='cyan';
this.style.border='1px solid grey';
}
}
</script>
</body>
隔行变色实现
<body>
<table>
<thead>
<th>代码</th>
<th>名称</th>
<th>最新公布净值</th>
<th>累计净值</th>
<th>前单位净值</th>
<th>净值增长率</th>
</thead>
<tbody>
<tr>
<td>11231</td>
<td>11231</td>
<td>11231</td>
<td>11231</td>
<td>11231</td>
<td>11231</td>
</tr>
<tr>
<td>11231</td>
<td>11231</td>
<td>11231</td>
<td>11231</td>
<td>11231</td>
<td>11231</td>
</tr>
<tr>
<td>11231</td>
<td>11231</td>
<td>11231</td>
<td>11231</td>
<td>11231</td>
<td>11231</td>
</tr>
<tr>
<td>11231</td>
<td>11231</td>
<td>11231</td>
<td>11231</td>
<td>11231</td>
<td>11231</td>
</tr>
<tr>
<td>11231</td>
<td>11231</td>
<td>11231</td>
<td>11231</td>
<td>11231</td>
<td>11231</td>
</tr>
<tr>
<td>11231</td>
<td>11231</td>
<td>11231</td>
<td>11231</td>
<td>11231</td>
<td>11231</td>
</tr>
</tbody>
</table>
<script>
//1.获取元素 获取的是tbody里面所有的行
var trs=document.querySelector('tbody').querySelectorAll('tr');
//2.利用循环绑定注册事件
for (var i=0;i<trs.length;i++){
//3.鼠标经过事件onmouseover
trs[i].onmouseover = function (){
this.className='bg';
}
//4.鼠标离开事件 onmouseout
trs[i].onmouseout = function (){
this.className='';
}
}
</script>
效果:
全选反选实现,即选中全选框后把状态给下面的每个单选框。
选择底下的单选框,选中后将全选框一起勾中的效果是,遍历每个单选框,只要有一个没有勾到,就不勾选全部。
代码如下:
<body>
<table>
<thead>
<th>
<input type="checkbox" id="j_cbAll">
</th>
<th>代码</th>
<th>名称</th>
<th>最新公布净值</th>
<th>累计净值</th>
<th>前单位净值</th>
<th>净值增长率</th>
</thead>
<tbody id="j_tb">
<tr>
<td>
<input type="checkbox">
</td>
<td>11231</td>
<td>11231</td>
<td>11231</td>
<td>11231</td>
<td>11231</td>
<td>11231</td>
</tr>
<tr>
<td>
<input type="checkbox">
</td>
<td>11231</td>
<td>11231</td>
<td>11231</td>
<td>11231</td>
<td>11231</td>
<td>11231</td>
</tr>
<tr>
<td>
<input type="checkbox">
</td>
<td>11231</td>
<td>11231</td>
<td>11231</td>
<td>11231</td>
<td>11231</td>
<td>11231</td>
</tr>
<tr>
<td>
<input type="checkbox">
</td>
<td>11231</td>
<td>11231</td>
<td>11231</td>
<td>11231</td>
<td>11231</td>
<td>11231</td>
</tr>
<tr>
<td>
<input type="checkbox">
</td>
<td>11231</td>
<td>11231</td>
<td>11231</td>
<td>11231</td>
<td>11231</td>
<td>11231</td>
</tr>
<tr>
<td>
<input type="checkbox">
</td>
<td>11231</td>
<td>11231</td>
<td>11231</td>
<td>11231</td>
<td>11231</td>
<td>11231</td>
</tr>
</tbody>
</table>
<script>
var j_tbAll=document.getElementById('j_cbAll');
var j_tbs=document.getElementById('j_tb').getElementsByTagName('input');
j_tbAll.onclick = function (){
for (var i=0;i<j_tbs.length;i++){
j_tbs[i].checked=this.checked;
}
}
for (var i=0;i<j_tbs.length;i++){
j_tbs[i].onclick = function (){
var flag=true;
for (var j=0;j<j_tbs.length;j++){
if (!j_tbs[j].checked){
flag=false;
break;
}
}
j_tbAll.checked=flag;
}
}
</script>
</body>
效果:
怎么获取属性值
element.getAttribute(‘属性’);
关于DOM 操作,我们主要是针对于元素的操作。主要有创建、增、删、改、查、属性操作、事件操作。
创建
//重写页面
1.document.write
2.innerHTML //效率高
3.createElement //创建节点清晰
增
1.appendChild
2.insertBefore
改
查询操作
属性操作
事件操作