s14 dom笔记
DOM
____oldboy python s14
- 简介:
- 文档对象模型(Document Object Model,简称DOM)
- W3C组织推荐的处理可扩展置标语言的标准编程接口
- 与平台和语言无关的应用程序接口(API)
- 可以动态地访问程序和脚本,更新其内容、结构和www文档的风格
1、找到标签
a. 直接找
document.getElementById('i1') 根据ID获取一个标签(单个元素)
document.getElementsByName 根据name属性获取标签集合
document.getElementsByClassName('c1') 根据class属性获取标签集合(列表)
document.getElementsByTagName('div') 根据标签名获取标签集合(列表)
b. 间接
tag = document.getElementById('i1')
parentElement // 父节点标签元素
children // 所有子标签
firstElementChild // 第一个子标签元素
lastElementChild // 最后一个子标签元素
nextElementtSibling // 下一个兄弟标签元素
previousElementSibling // 上一个兄弟标签元素
2、操作标签
a. 文件内容操作
- innerText # 仅文本
标签.innerText # 获取标签中的文本内容(过滤标签)
标签.innerText = "" # 对标签内部文本进行重新赋值
- innerHTML # 获取标签中全内容
- value
input标签 # 获取当前值
select标签 # 获取选中的值 selectedIndex
textarea标签 # 获取当前标签中的值
- 搜索框示例
b. 样式操作
className
tag.className 直接整体做操作class
tag.classList class列表
tag.classList.add('样式名') 添加指定样式
tag.classList.remove('样式名') 删除指定样式
对某一个样式操作:
<style>
.c1{
font-size:16px;
color:red
}
</style>
<div class='c1 c2'></div>
# obj.style.fontSize='16px';
# obj.style.backgroundColor='red';
# .style.color = 'red';
c. 属性操作
obj = document.getElementById('i1')
obj.attributes #获取所有属性
obj.getAttibute
obj.setAttribute('属性名','属性')
obj.removeArrribute('属性名')
d. 创建标签,并添加到HTML中:
- 字符串方式
- 对象方式
document.createElement('input')
- 创建、添加标签示例
e. 提交表单
任何标签通过DOM都可以提交表单
<body>
<form id='f1' action="">
<input type="text">
<input type="submit" value="提交">
<a onclick="submitFrom(); " href="">提交吧</a>
</form>
<script>
function submitForm(){
document.getElementById('f1').submit();
}
</script>
</body>
f. 其他:
console.log()
alert()
var v = confirm() # 确认框,返回值true/false
checkbox
对象.checked # 获取值
对象.checked = true # 设置值
location
location.href # 获取当前网址
location.href = '' # 重定向,跳转
location.reload() # 页面刷新
location.href=location.href <==>location.reload()
setInterval
# 定时器一直执行
# var o1 = setInterval(function(){},5000)
# clearInterval(o1)
var obj = setInterval(function(){
console.log(1);
clearInterval(obj); # 清楚定时器
},5000)
setTimeout
# 定时器只执行一次
# var o2 = setTimeout(function(){},5000)
# cleatTimeout(o2)
setTimeout(function(){
console.log('time')
},5000)
3、事件
- 定义:
<div onclick='函数(123)'></div>
<script> ... </script>
- 常用:
onclick
onblur
onfocus
onmouseover
onmouseout
- 绑定事件两种方式:
- 直接标签绑定 onclick ='func();'
- 先获取DOM对象,然后进行绑定
document.getElementsById('xx').onclick
- this当前触发事件的标签
a. 第一种绑定方式
<input type='button' onclick='clickon(this)'>
function clickon(ths){
//ths当前点击标签
}
b.第二种绑定方式
<input id = 'i1' type='button'>
ocument.getElementsById('i1').onclick= function(){
//this 代指当前点击标签
}
c. 第三种绑定方式
示例:
<style>
#main{
background-color: red;width:400px;height: 300px;
}
#content{
background-color: cadetblue;width:200px;height: 150px;
}
</style>
<body>
<div id="main">
<div id="content"></div>
</div>
<script>
var mymain = document.getElementById('main');
var mycontent = document.getElementById('content');
mymain.addEventListener('click',function(){console.log('main')},false);
mycontent.addEventListener('click',function(){console.log('content')},false);
//事件的捕捉与冒泡 true:捕捉 false: 冒泡
</script>
</body>
- 搜索框示例:
<body>
<input id="i1" onfocus="Focus();" onblur="Blur();" type="text" value="请输入关键字">
<input type="text"placeholder="请输入关键字"> <!--新浏览器支持-->
<script>
function Focus(){
var tag=document.getElementById('i1');
var val =tag.value;
if (val == "请输入关键字"){
tag.value="";
}
}
function Blur(){
var tag=document.getElementById('i1');
var val =tag.value;
if (val.length == 0){
tag.value='请输入关键字';
}
}
</script>
</body>
- 创建、添加标签示例:
<body>
<input type="button" onclick="AddEle1();"value="+">
<input type="button" onclick="AddEle2();"value="+">
<div id="i1">
<p><input type="text"></p>
</div>
<script>
function AddEle1(){
//创建一个标签
//将标签添加到i1 里面
var tag = "<p><input type='text'></p>";
document.getElementById('i1').insertAdjacentHTML('beforeEnd',tag)
//beforeBegin,afterBegin,beforeEnd,afterEnd 四个参数
}
function AddEle2(){
//创建一个标签
//将标签添加到i1 里面
var tag = document.createElement('input');
tag.setAttribute('type','text');
tag.style.fontSize='16px';
tag.style.color='red';
var p=document.createElement('p');
p.appendChild(tag);
document.getElementById('i1').appendChild(p)
}
</script>
</body>
- 模态对话框 + 全选反选取消 示例:
<head>
<meta charset="UTF-8">
<title></title>
<style>
.hide{
display: none;
}
.c1{
position: fixed;
left: 0;top:0;right: 0;bottom:0;
background-color: black;opacity: 0.6;z-index: 9;
}
.c2{
width:500px;height: 400px;background-color: white;position: fixed;
left:50%;top:50%;margin-left:-250px;margin-top:-200px;
z-index: 10;;
}
</style>
</head>
<body style="margin:0;">
<div>
<input type="button" value="添加" onclick="ShowModel();">
<input type="button" value="全选" onclick="ChoseAll();">
<input type="button" value="取消" onclick="CancleAll();">
<input type="button" value="反选" onclick="ReverseAll();">
</div>
<table>
<thead>
<tr>
<th>选择</th>
<th>主机名</th>
<th>端口</th>
</tr>
</thead>
<tbody id="tb">
<tr>
<td><input type="checkbox"></td>
<td>1.1.1.1</td>
<td>190</td>
</tr>
<tr>
<td><input type="checkbox"></td>
<td>1.1.1.2</td>
<td>192</td>
</tr>
<tr>
<td><input type="checkbox"></td>
<td>1.1.1.3</td>
<td>193</td>
</tr>
</tbody>
</table>
<!--遮罩层开始-->
<div id="i1" class="c1 hide"></div>
<!--遮罩层结束-->
<!--弹出框开始-->
<div id="i2" class="c2 hide">
<p><input type="text"></p>
<p><input type="text"></p>
<p><input type="button" value="取消"onclick="HideModel();">
<input type="button" value="确定" ></p>
</div>
<!--弹出框结束-->
<script>
function ShowModel(){
document.getElementById('i1').classList.remove('hide');
document.getElementById('i2').classList.remove('hide');
}
function HideModel(){
document.getElementById('i1').classList.add('hide');
document.getElementById('i2').classList.add('hide');
}
function ChoseAll(){
var tbody = document.getElementById('tb');
//获取所有tr
var tr_list = tbody.children;
for (var i=0;i<tr_list.length;i++){
//循环所有tr,current_tr
var current_tr = tr_list[i];
var checkbox = current_tr.children[0].children[0];
checkbox.checked=true;
}
}
function CancleAll(){
var tbody = document.getElementById('tb');
//获取所有tr
var tr_list = tbody.children;
for (var i=0;i<tr_list.length;i++){
//循环所有tr,current_tr
var current_tr = tr_list[i];
var checkbox = current_tr.children[0].children[0];
checkbox.checked=false;
}
}
function ReverseAll(){
var tbody = document.getElementById('tb');
//获取所有tr
var tr_list = tbody.children;
for (var i=0;i<tr_list.length;i++){
//循环所有tr,current_tr
var current_tr = tr_list[i];
var checkbox = current_tr.children[0].children[0];
if(checkbox.checked){
checkbox.checked=false;
}else{
checkbox.checked=true;
}
}
}
</script>
</body>
- 左侧菜单示例:
<head>
<meta charset="UTF-8">
<title></title>
<style>
.hide{
display: none;
}
.item .header{
height: 35px;color:white;line-height: 35px;;
}
</style>
</head>
<body>
<div style="height: 48px;"></div>
<div style="width:300px;">
<div class="item">
<div id="i1" class="header" onclick="ChangeMenu('i1');">菜单一</div>
<div class="content">
<div>内容1</div>
<div>内容2</div>
<div>内容3</div>
</div>
</div>
<div class="item">
<div id="i2" class="header" onclick="ChangeMenu('i2');">菜单二</div>
<div class="content hide">
<div>内容1</div>
<div>内容2</div>
<div>内容3</div>
</div>
</div>
<div class="item">
<div id="i3" class="header" onclick="ChangeMenu('i3');">菜单三</div>
<div class="content hide">
<div>内容1</div>
<div>内容2</div>
<div>内容3</div>
</div>
</div>
</div>
<script>
function ChangeMenu(nid){
var current_header = document.getElementById(nid);
var item_list =current_header.parentElement.parentElement.children;
for(var i=0;i<item_list.length;i++){
var current_item = item_list[i];
current_item.children[1].classList.add('hide');
}
current_header.nextElementSibling.classList.remove('hide');
}
</script>