49 DOM(2)
一.value属性:
input ,select 标签 ,textarea 标签中有value属性,
获取他们属性值的方法,先获取该元素ele,然后ele.value得到value值。
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Title</title>
</head>
<body>
<!--input ,select ,textarea 有vaule 属性-->
<script>
window.onload =function (ev) {
var user = document.getElementById("user");
//鼠标失去焦点时触发
user.onblur = function (ev2) {
console.log(user.value);
// 获取select标签中的value属性值 var sel_value = document.getElementById("sel").value;
//获取textarea 标签中的value属性值
var tex_value = document.getElementById("tex").value;
console.log(sel_value);
console.log(tex_value); }; }
</script> <form action="">
<div>
姓名:
<label for="user"></label>
<input type="text" name="usr" id="user">
</div> <select name="op" id="sel">
<option value="0">北京</option>
<option value="1">上海</option>
<option value="2">广州</option>
<option value="3">深圳</option>
</select> <div>
<textarea name="" id="tex" cols="30" rows="10"> </textarea>
</div> </form>
</body>
</html>
二.js事件:
onblur:鼠标失去焦点时触发
onfocus:鼠标获得焦点时触发
onshbmit :form表单数据提交时,先触发该事件再提交
onselect:被选中时,触发的事件
onchange:改变时触发
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Title</title>
</head>
<body> <div class="box">
<img src="default.jpg" alt="" width="100px" height="100px" >
<input type="file" id="file">
</div>
<script> var f1 = document.getElementById("file");
var img = document.getElementsByTagName("img")[0];
f1.onchange=function (ev) {
//1.获取用户选中的文件
var file_obj = f1.files[0];
//2.找到该文件的路径
//创建一个文件阅读阅读器
var reader = new FileReader();
//读该文件对象
reader.readAsDataURL(file_obj);
//等待文件阅读器加载完成
reader.onload =function (ev2) {
//3.将图片地址赋值给src
img.src =reader.result;
} } </script>
</body>
</html>
onchange事件和头像上传
三.节点的增删改替换:
1.创建节点:
var ele = document.createElement(节点名)
父节点.appendChild(ele)
2.删除节点
父节点.removeChild(节点)
3.替换节点
父节点.replaceChild(新节点,旧节点)
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Title</title>
</head>
<body>
<div class="p1">
<h3 class="title">WELCOME!</h3>
</div>
<hr>
<div class="c1">
<div><button class="add">一 展示图片</button></div> </div>
<hr>
<div class="c2">
<button class="rem">删除节点 </button>
<h4>欢迎删除,圣诞快乐!</h4>
</div>
<hr>
<div class="c3">
<button class="replace">替换节点 </button>
</div> <script>
// 1 创建节点添加节点
var add =document.getElementsByClassName("add")[0]; var c1 =document.getElementsByClassName("c1")[0];
var img = document.createElement("img");//把创建的节点放在点击事件外面,效果是只创建一张图片
// img.setAttribute("src","高圆圆.jpg");
img.src="高圆圆.jpg";
add.onclick=function () {
c1.appendChild(img);
}; // 2 删除节点 父节点.removeChild(删除节点),删除节点的思路为,先找到父节点,再删除需要删除的子节点
var c2 =document.getElementsByClassName("c2")[0];
var button =document.getElementsByClassName("rem")[0];
button.onclick =function () {
c2.removeChild(this.nextElementSibling);//删除下个兄弟节点
}; // 替换节点 父节点.replaceChild(新节点,旧节点) //需要替换的换的节点
var h3 =document.getElementsByClassName("title")[0];
//父节点
var p1 =document.getElementsByClassName("p1")[0];
//获取点击事件标签
var rep =document.getElementsByClassName("replace")[0];
rep.onclick =function () {
//创建一个新的节点
var p =document.createElement("p");
p.innerText = "到深圳就是深圳人!";
p1.replaceChild(p,h3);
} </script> </body>
</html>
四.二级联动:
实例场景:两个select的标签中,省份对应地区。
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Title</title>
</head>
<body> <select name="" id="sel1">
<option value="0">请选择省份</option>
<option value="1">上海</option>
<option value="2">深圳</option>
<option value="3">广州</option>
</select> <select name="" id="sel2">
<option value="0">请选择地区</option> </select> <script>
var sel1 = document.getElementById("sel1");
var sel2 = document.getElementById("sel2");
var data ={
"1":["徐汇区","浦东新区","黄埔区"],
"2":["南山区","龙华区","罗湖区"],
"3":["天河区","海珠区","番禺区"]
};
//sel1改变时触发事件
sel1.onchange =function (ev) {
//先将sel2中的option标签去掉,留下第一个
sel2.options.length =1;
//接着将在sel1标签中增加option标签,第一步创建标签,第二部循环添加标签
//创建标签 var key = this.value;
for (var i=0;i<data[key].length;i++){
var option =document.createElement("option");
option.innerText =data[key][i];
option.value =i+1;
sel2.appendChild(option); }
}; </script>
</body>
</html>
五.实例:tab栏 (对应关系的切换 li ===> div)
两点:
1.被点击的 li北京变红色,其他 li变白色 。
2.被点击的 li 对应的div显示,其他 li 对应的div隐藏。
两层循环解决问题
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Title</title>
<style>
*{
padding: 0;
margin: 0;
} ul,li{
list-style: none;
}
a{
text-decoration: none;
}
.bar{
width: 60%;
height: 40px;
border: 1px solid red;
}
.bar .list{
text-align: center;
height: 40px;
line-height: 40px;
}
.bar .list li{
float: left;
width: 106px;
height: 40px;
text-align: center;
border: 1px solid pink;
cursor: pointer; }
.bar .list li :hover{
color: red;
} .bar .list .li2{
width: 120px;
}
.bar .list .li4{
width: 156px;
}
.bar .list a{
display: inline-block;
height: 40px;
width: 104px;
border: 1px solid green;
float: right;
margin-right: 10px;
color: #333333; }
.item{
width: 60%;
height: 400px;
border: 1px solid red;
}
.hide{
display: none;
}
.show{
display: block;
} </style>
</head>
<body>
<!--https://item.jd.com/7512626.html-->
<div class="bar">
<ul class="list">
<li class="li li1 " >商品介绍</li>
<li class="li li2" >规格与包装</li>
<li class="li li3" >售后保障</li>
<li class="li li4" >商品评价(10万+)</li>
<li class="li li5" >社区互动</li>
<a href="#">a加入购物车</a>
</ul>
</div>
<div class="item item1 " >div1</div>
<div class="item item2 hide">div2</div>
<div class="item item3 hide">div3</div>
<div class="item item4 hide">div4</div>
<div class="item item5 hide">div5</div> <script>
var lis =document.getElementsByClassName("li"); var items =document.getElementsByClassName("item"); for(i=0;i<lis.length;i++){ lis[i].onclick =function () {
//被点击的li背景色变成红色,其他变成白色,两层循环实现
this.style.backgroundColor="red"; // items[i].classList.remove("hide");//这句不能放上面,因为i加载完页面后i变成了5;每次点击页面i都是为固定值
for (var j=0;j<lis.length;j++){
if (lis[j] !==this){
lis[j].style.backgroundColor="white";
items[j].classList.add("hide"); }else {
items[j].classList.remove("hide");
} }
//被点击的li对应的div显示出来,其他li对应的div隐藏 }
} </script> </body>
</html>

49 DOM(2)的更多相关文章
- DOM(二)使用DOM
在了解DOM(文本对象模型)的框架和节点后,最重要的是使用这些节点处理html网页 对于一个DOM节点node,都有一系列的属性和方法可以使用.常用的有下表. 完善:http://www.w3scho ...
- 一步一步带你实现virtual dom(一)
一步一步带你实现virtual dom(一) 一步一步带你实现virtual dom(二)--Props和事件 要写你自己的虚拟DOM,有两件事你必须知道.你甚至都不用翻看React的源代码,或者其他 ...
- 8.6 JavaScript之HTML的DOM(三)
8.5 HTML和JavaScript的DOM(三) 一.DOM 是Document Object Model( 文档对象模型 )的缩写. DOM把所有的html都转换为节点 .整个文档 是一个节点 ...
- JS之DOM(一)
一.DOM简介 什么是DOM?简单地说,DOM是是针对HTML和XML文档的一个API,一套对文档的内容进行抽象和概念化的方法. 学习过ORM的同学可能知道ORM是将数据库中的表映射到类,建立一个表和 ...
- DOM(四)事件流
1.冒泡型事件 浏览器的事件模型分两种:捕获型事件和冒泡型事件.由于ie不支持捕获型事件,所以以下主要以冒泡型事件作为讲解.(dubbed bubbling)冒泡型指事件安装最特定的事件到最不特定的事 ...
- DOM(五)事件对象
浏览器中的事件都是以对象的形式存在的,同样ie浏览器与标准dom浏览器之间存在获取事件对象上也存在差别.在ie浏览器中事件对象是windows对象的一个属性event,访问通常采用如下方法. oP.o ...
- JS之DOM(二)
一.DOM节点的操作 1.增加: (1). document.creatElement('标签名');创建元素节点 (2). document.creatTextNode('文本内容'):创建文本节点 ...
- 《JavaScript 闯关记》之 DOM(下)
Element 类型 除了 Document 类型之外,Element 类型就要算是 Web 编程中最常用的类型了.Element 类型用于表现 XML 或 HTML 元素,提供了对元素标签名.子节点 ...
- 《JavaScript 闯关记》之 DOM(上)
DOM(文档对象模型)是针对 HTML 和 XML 文档的一个 API.DOM 描绘了一个层次化的节点树,允许开发人员添加.移除和修改页面的某一部分. 节点层次 DOM 可以将任何 HTML 或 XM ...
随机推荐
- aspose 小记
/// <summary> /// 定位书签替换值 /// </summary> /// <param name="documentBuilder"& ...
- NetSuite助力各行业企业快速发展
Oracle NetSuite今天发布了一系列全新技术创新,帮助各行各业企业提升收入.海外扩张以及赋能更多业务用户.最新推出的商务管理.财务管理和分析能力可协助企业利用NetSuite平台来超越客户预 ...
- Python 线程调用
简介: Python 线程可以通过主线程,调用线程来执行其他命令, 为Python提供更方便的使用. 并发线程测试 # 命令调用方式 import threading,time # 定义每个线程要运行 ...
- troubleshooting-windows 在 CDH集群环境读取 Hive 表 KrbException: Cannot locate default realm
KrbException: Cannot locate default realm 解决办法 1)拷贝需要组件的配置文件到项目中的 /resources/目录.如hadoop,目录/etc/hadoo ...
- 20145304 网络对抗技术 逆向与Bof基础
20145304 网络对抗技术 逆向与Bof基础 实践目标 学习以下两种方法,运行正常情况下不会被运行的代码: 手工修改可执行文件,改变程序执行流程,直接跳转到getShell函数. 利用foo函数的 ...
- Tensorflow游乐场
昨天,Google发布了Tensorflow游乐场.Tensorflow是Google今年推出的机器学习开源平台.而有了Tensorflow游乐场,我们在浏览器中就可以训练自己的神经网络,还有酷酷的图 ...
- linux学习笔记《一.烧写篇_android》
一.菜鸟入门.烧写篇 (1).A8板子烧写程序 (NANDFlash烧写) ①烧写软件: 安装原件 安装后: 应用软件图标 ② 我们首先选中English/中文,切换到中文,然后关掉重启(也可以用英文 ...
- Python3基础 函数 无参数无返回值 调用会输出hello world的函数
Python : 3.7.0 OS : Ubuntu 18.04.1 LTS IDE : PyCharm 2018.2.4 Conda ...
- Spring通过ApplicationContext主动获取bean
有些场景无法通过AutoWired和compoment注解传递进来,于是希望通过Spring context主动去获取beandemo: package com.qhong.Util; import ...
- Node10.15.0的安装
1. 首先我们需要去node官网下载最近版本的压缩包,然后我们把他们解压到我们自定义的安装路径,我使用的是/usr/local/lib/nodejs VERSION=v10.15.0 DISTRO=l ...