DOM之一些小实验demo
body, table{font-family: 微软雅黑; font-size: 10pt}
table{border-collapse: collapse; border: solid gray; border-width: 2px 0 2px 0;}
th{border: 1px solid gray; padding: 4px; background-color: #DDD;}
td{border: 1px solid gray; padding: 4px;}
tr:nth-child(2n){background-color: #f8f8f8;}
<script type="text/javascript">
<
function showmsg(){
var h1array = document.getElementsByTagName("h1");
var h10bj = h1array[0];
//法1
//var text = h10bj.childNodes[0].nodeValue;
//法2
//var text = h10bj.firstChild.nodeValue;
//法3
//var text = h10bj.lastChild.nodeValue;
//法4
//var text = h10bj.innerHTML;
//法5
var text = h10bj.innerText;
alert(text);
}
</script>
<h1 id="title">后天休息</h1>
<input type = "button" value="获取文档" onclick="showmsg()">
|
<script type="text/javascript">
//第一步:找到bj节点
function getli(){
//var bjNode=document.getElementById("bj");
var bjNode=document.getElementsByTagName("li")[0];
//获取所有节点信息
for (var i=0;i<bjNode.childNodes.length ;++i )
{
alert(bjNode.childNodes[i].nodeType+":"+bjNode.childNodes[i].nodeName+ ":"+bjNode.childNodes[i].nodeValue);
}
}
</script>
<ul>
<li id="bj" value="beijing">
北京
<h1>海淀</h1>
</li>
<li id="sh" value="shanghai">
上海
</li>
</ul><br/>
<input type="button" value="li取值" onclick="getli()"/>
|
<select name="edu" id="edu">
<option value="本科">本科</option>
<option value="专科">专科</option>
<option value="高中">高中</option>
<option value="小学">小学</option>
<option value="幼儿园">幼儿园</option>
</select>
//select放在下面编译执行的时候才能找到前面的select
<script type="text/javascript">
//取每个option内的文本
//第一步 取select节点
var selectNode=document.getElementsByName("edu")[0];
// alert(selectNode.childNodes.length); //11个,空白部分算做文本也是子节点
//法一
/*
for (var i=0; i<selectNode.childNodes.length ;++i )
{
//alert(selectNode.childNodes[i].firstChild.nodeValue); //firstChild会把里面的空格回车算在里面,会出现null情况
if (selectNode.childNodes[i].nodeType!=3) //不是文本
{
alert(selectNode.childNodes[i].firstChild.nodeValue);
}
}
*/
//法二
var optionArray = document.getElementsByTagName("option");
for (var i=0;i<optionArray.length ; ++i)
{
//alert(optionArray[i].nodeValue); //元素节点的nodeValue是元素的标签名称
alert(optionArray[i].innerHTML);
}
</script>
|
//修改
<script type="text/javascript">
function changeNode(){
//1.找到父节点
var ul0bj1=document.getElementsByTagName("ul")[0];
//找到打灰机
var gameNode=document.getElementById("game");
//copy一份要拿来替换的节点
var gameNodecopy=gameNode.cloneNode(true);
//true表示要克隆节点所有属性和子节点
//找到要替换的北京
var bjNode1=document.getElementById("bj");
//替换
//ul0bj1.replaceChild(gameNode,bjNode1);
//这样写新的节点直接被截切,前面要copy一份
//法1 用克隆节点替换
//ul0bj1.replaceChild(gameNodecopy,bjNode1);
//法2
bjNode1.replaceNode(gameNodecopy);
}
</script>
<ul >
<li id="bj" onclick="changeNode()">北京</li>
<li>湖南</li>
<li>山东</li>
</ul>
<ul>
<li id="game">打<p>灰机</p></li>
<li>抓泥鳅</li>
<li>斗地主</li>
</ul>
|
//增加
/*xml dom*/
<script type="text/javascript">
function addOptions(){
//创建一个节点 <option>小学</option>
var optionNode=document.createElement("option");
var textNode=document.createTextNode("小学");
//设置option的value属性
optionNode.setAttribute("value","小学");
//将文本节点作为option的子节点
optionNode.appendChild(textNode);
//找到select节点
var selectNode=document.getElementsByTagName("select")[0];
//selectNode.appendChild(optionNode);//追加到末尾
//在指定位置插入
var lastNode=document.getElementsByTagName("option")[3];
selectNode.insertBefore(optionNode,lastNode); //父节点.insertBefore(新节点,旧节点);
}
/*html*/
function addOptions2(){
var optionNode=new Option("小学","小学");
var selectNode=document.getElementsByTagName("select")[0];
selectNode.add(optionNode,null); //第二个参数写位置,null默认放到末尾
}
</script>
<input type="button" value="添加选项" onclick="addOptions()"/>
<select>
<option>本科</option>
<option>专科</option>
<option>高中</option>
<option>初中</option>
</select>
|
<script type="text/javascript">
function checkAll(flag){
var checkboxes=document.getElementsByName("hobby");
for (var i=0;i<checkboxes.length ;++i )
{
checkboxes[i].checked=flag;
}
}
function reverseCheck(){
var checkboxes=document.getElementsByName("hobby");
for (var i=0;i<checkboxes.length ;++i )
{
checkboxes[i].checked=!checkboxes[i].checked;
}
}
</script>
<h1>请选择你的爱好:</h1>
全选/全不选<input type="checkbox" name="hobbys" onclick="checkAll(this.checked)" /><br/>
<input type="checkbox" name="hobby" value="football" />足球
<input type="checkbox" name="hobby" value="basketball" />篮球
<input type="checkbox" name="hobby" value="swim" />游泳
<input type="checkbox" name="hobby" value="singing" />唱歌<br/>
<input type="button" value="全选" onclick="checkAll(true)"/>
<input type="button" value="全不选" onclick="checkAll(false)"/>
<input type="button" value="反选" onclick="reverseCheck()"/> </body>
|
<script type="text/javascript">
/*html dom*/
function removeLeft(){
//找到左边选择的option选项
var leftSelectNode=document.getElementById("left");
//选中的index对应的option
if(-1==leftSelectNode.selectedIndex);return; //判断左边,没有元素就直接返回
var selectOptionNode=leftSelectNode.options[ leftSelectNode.selectedIndex ];
//找到右边的select对象
var rightSelectNode=document.getElementById("right");
//给select对象增加一个option
rightSelectNode.add(selectOptionNode,null);
}
function removeLeftAll(){ //注意
var leftSelectNode=document.getElementById("left");
var rightSelectNode=document.getElementById("right");
for (var i=0;i<leftSelectNode.options.length ; )
//每次移动一个过去,length都会减一
{
rightSelectNode.add(leftSelectNode.options[i],null);
}
}
</script>
<table align="center">
<tr>
<td>
<select size="10" id="left">
<option>选项1</option>
<option>选项2</option>
<option>选项3</option>
<option>选项4</option>
<option>选项5</option>
<option>选项6</option>
<option>选项7</option>
<option>选项8</option>
</select>
</td>
<td>
<input type="button" value="--->" onclick="removeLeft()"/><br/>
<input type="button" value="===>" onclick="removeLeftAll()"/><br/>
<input type="button" value="<---" onclick="removeRight()"/><br/>
<input type="button" value="<===" onclick="removeRightAll"/><br/>
</td>
<td>
<select size="10" id="right">
<option>选项9</option>
</select>
</td>
</tr>
</table>
|
<script type="text/javascript">
var cityList = new Array();
cityList['北京市'] = ['朝阳区','东城区','西城区', '海淀区','宣武区','丰台区','怀柔','延庆','房山'];
cityList['上海市'] = ['宝山区','长宁区','丰贤区', '虹口区','黄浦区','青浦区','南汇区','徐汇区','卢湾区'];
cityList['广州省'] = ['广州市','惠州市','汕头市','珠海市','佛山市','中山市','东莞市'];
cityList['深圳市'] = ['福田区', '罗湖区', '盐田区', '宝安区', '龙岗区', '南山区', '深圳周边'];
cityList['重庆市'] = ['俞中区', '南岸区', '江北区', '沙坪坝区', '九龙坡区', '渝北区', '大渡口区', '北碚区'];
cityList['天津市'] = ['和平区', '河西区', '南开区', '河北区', '河东区', '红桥区', '塘古区', '开发区'];
cityList['江苏省'] = ['南京市','苏州市','无锡市'];
cityList['浙江省'] = ['杭州市','宁波市','温州市'];
cityList['四川省'] = ['四川省','成都市'];
cityList['海南省'] = ['海口市'];
cityList['福建省'] = ['福州市','厦门市','泉州市','漳州市'];
cityList['山东省'] = ['济南市','青岛市','烟台市'];
cityList['江西省'] = ['江西省','南昌市'];
cityList['广西省'] = ['柳州市','南宁市'];
cityList['安徽省'] = ['安徽省','合肥市'];
cityList['河北省'] = ['邯郸市','石家庄市'];
cityList['河南省'] = ['郑州市','洛阳市'];
cityList['湖北省'] = ['武汉市','宜昌市'];
cityList['湖南省'] = ['湖南省','长沙市'];
cityList['陕西省'] = ['陕西省','西安市'];
cityList['山西省'] = ['山西省','太原市'];
cityList['黑龙江省'] = ['黑龙江省','哈尔滨市'];
cityList['其他'] = ['其他'];
function init(){
//初始化第一个select控件,给它里面加入option
//var array=["bnez","bmw","qq"]
//for (i in array ) //java里面 i 表示array 里的每一个元素;js 里 i 表示数组索引,上面例子表示0,1,2; 代码例子表示省份;
//找到第一个select控件
var provinceNode=document.getElementById("province");
//拿到array里的省份数据,然后根据该数据new optlion,将option放在第一个select控件
for(x in cityList) //各省份
{
var optionNode=new Option(x,x);
provinceNode.add(optionNode,null);
}
}
function changeCity(){
//拿到第一个select控件选择的省份
var provinceNode=document.getElementById("province");
//拿到当前选中的option
var selectedOption=provinceNode.options[provinceNode.selectedIndex];
//拿到当前选中的省份名称可以拿到城市名称
cityList[selectedOption.innerHTML];
var cityNode=document.getElementById("city");
//每次新增之前先将原来的option清空(select长度或者数目改为0)
cityNode.length=1; //为1的时候第二个会有请选择,写0没有,上来就是城市
for(x in cityList[selectedOption.innerHTML]) //注意,这里拿到的是下标,就不是值了
{
var cityOption=new Option(cityList[ selectedOption.innerHTML ][ x ],cityList[ selectedOption.innerHTML ][ x ]);
cityNode.add(cityOption,null);
}
}
//window.onload=init;//这样也可以在打开页面加载函数
</script>
<body onload="init()" >
<select id="province" onchange="changeCity()">
<option>--请选择省份--</option>
</select>
<select id="city">
<option>--请选择城市--</option>
</select>
</body>
|
<table align="center" cellpadding="10" cellspacing="10" >
<tr>
<td>姓名:<input type="text" id="username" /></td>
<td>Email:<input type="text" id="email"/></td>
<td>年龄:<input type="text" id="age"/></td>
</tr>
<tr>
<td colspan="3" align="center"><input type="button" value="添加" onclick="addTR()"/></td>
</tr>
</table>
<br/>
<br/>
<br/>
<hr/>
<table id="tabInfo" align="center" width="500" border="1">
<tr>
<td>姓名</td>
<td>Email</td>
<td>年龄</td>
<td>操作</td>
</tr>
</table>
|
<script type="text/javascript">
//xml dom
function addTR(){
//获取input输入框的数据
var username=document.getElementById("username").value;
var email=document.getElementById("email").value;
var age=document.getElementById("age").value;
//新建一行 tr 四个 td
var trNode=document.createElement("tr");
var tdNode1=document.createElement("td");
var tdNode2=document.createElement("td");
var tdNode3=document.createElement("td");
var tdNode4=document.createElement("td");
//给td插入数据
tdNode1.innerHTML=username;
tdNode2.innerHTML=email;
tdNode3.innerHTML=age;
tdNode4.innerHTML="<input type='button' value='删除' onclick='deleteTR(this)'>";
//新建的tr增加四个子节点td
trNode.appendChild(tdNode1);
trNode.appendChild(tdNode2);
trNode.appendChild(tdNode3);
trNode.appendChild(tdNode4);
//找到表格,下面增加一行
var tableNode=document.getElementById("tabInfo");
tableNode.appendChild(trNode);
}
//HTML
function addTR(){
//获取数据
var username=document.getElementById("username").value;
var email=document.getElementById("email").value;
var age=document.getElementById("age").value;
//找到表格
var tableNode=document.getElementById("tabInfo");
//插入一行
var trNode=tableNode.insertRow(tableNode.rows.length); //rows是一个数组
//插入4个 td
var tdNode0=trNode.insertCell(0); //括号里的是索引
var tdNode1=trNode.insertCell(1);
var tdNode2=trNode.insertCell(2);
var tdNode3=trNode.insertCell(3);
//填充数据
tdNode0.innerHTML=username;
tdNode1.innerHTML=email;
tdNode2.innerHTML=age;
tdNode3.innerHTML="<input type='button' value='删除' onclick='deleteTR(this)'/>"
}
//删除
function deleteTR(inputbutton){
//拿到表格
var trNode=inputbutton.parentNode.parentNode;
//调用函数删除
trNode.parentNode.deleteRow(trNode.rowIndex);
}
//-->
</script>
|
<script type="text/javascript">
<!--
status = 1
var name1=['刘冬','冯凯','林雷','崔兴永','梁莫柱','邓应民','江宇航','陈剑锋','朱政','杨航','李非凡','陈乔 ','翟乃晖','朱希','赵帅','李伟钊','林少龙','邢超超','李威','张文超','王刚','王童玉','王强','贺群夫','张霞'];
var name2=['王虎彪','殷洲','杨进进','邓丽英','嵇珂','任国栋','胡飞龙','林超豪','周继昌','曹亚飞','于兴达','黄帅','刘宗元','冷熠博','陈奎','林妙胜','方建明','李桂冀','肖博','张明辉','吴晓璇','陶飞','沈阳','戴会聪'];
var name3=['粟玲','王锜键','刘政','刘光明'];
var namelist =name1.concat(name2,name3);
function showOneName_Random(){
document.getElementById("name_div").innerHTML = namelist[Math.floor(Math.random()*namelist.length)];
}
function start(){
timer = setInterval(showOneName_Random, 100);
}
function stopname(){
if(status == 1){
clearInterval(timer);
status = 0;
}else{
timer = setInterval(showOneName_Random, 100);
status = 1;
}
}
//-->
</script>
|
<style type="text/css">
#name_div{
margin:4cm;
padding:0cm;
font-size:3cm;
color:red;
width:10cm;
height:6cm;
cursor:pointer;
text-align:center;
}
</style>
<body onload="start()">
<center><Font style="margin-top:5cm" size=7 >点名页面</Font></center>
<hr size=10>
<center><div id=name_div onClick="stopname()"></div> </center>
</body>
|
DOM之一些小实验demo的更多相关文章
- Hadoop之词频统计小实验
声明: 1)本文由我原创撰写,转载时请注明出处,侵权必究. 2)本小实验工作环境为Ubuntu操作系统,hadoop1-2-1,jdk1.8.0. 3)统计词频工作在单节点的伪分布上,至于真正实 ...
- js中关于事件捕获与事件冒泡的小实验
1.事件冒泡:事件按照从最特定的事件目标到最不特定的事件目标(document对象)的顺序触发. IE 5.5: div -> body -> document IE 6.0: div - ...
- 番外篇!全球首个微信应用号开发教程!小程序 DEMO 视频奉上!
大家好,我是博卡君.经过国庆节的七天假期,相信很多朋友都已经研究出自己的小程序 demo 了吧?我最近也利用休息时间关注了一下网上关于小程序开发的讨论,今天就利用这个番外篇谈谈自己对小程序的一些想法吧 ...
- 秒懂JVM的三大参数类型,就靠这十个小实验了
秒懂JVM的三大参数类型,就靠这十个小实验了 你好,我是悟空哥,「7年项目开发经验,全栈工程师,开发组长,超喜欢图解编程底层原理」.手写了2个小程序,Java刷题小程序,PMP刷题小程序,已发布到公众 ...
- 基于 Source Generators 做个 AOP 静态编织小实验
0. 前言 上接:用 Roslyn 做个 JIT 的 AOP 作为第二篇,我们基于Source Generators做个AOP静态编织小实验. 内容安排如下: source generators 是什 ...
- 微信小程序DEMO初体验
小程序虽然被炒的很热,但是绝大部分人却从未亲自体验过,在2017年的上班第一天,献上一个小程序DEMO,您可以体验! 注意:由于微信限制,只能使用扫一扫来体验下方小程序DEMO. DEMO首页截图如下 ...
- PBR综合小实验视频-狮子XL
这个是上学时候录的一个策略路由小实验
- ubuntu下格式化内存当硬盘使的小实验
内存虚拟硬盘(ramdisk)是指通过软件技术,将物理内存进行分割,将一部分内存通过虚拟技术转变为硬盘以较大幅度提升计算机数据读取速度和保护硬盘. 在ubuntu下的dev下有ram相关的文件,这些文 ...
- MongoDB 主从复制小实验
MongoDB 主从复制小实验 操作环境描述:WIN8 64位操作系统,内装虚拟机为CentOS 5.5 32位系统. 操作描述:跟其他关系型数据库类似,在主库进行数据操作,将数据同步到从节点,从节 ...
随机推荐
- 三个在线django速成教程(转)
add by zhj: 除了这几个在线的,有些书也不错 1. Two Scoops of Django 2. Instant Django 1.5 Application Development St ...
- iptables综述
1 概述 如下图所示,iptables共有Filter,Nat,Mangle和RAW共四个table,每个table还有若干个chain,每个chain中还包含若干个rule 1.1 Filter t ...
- Nginx反向代理服务器安装与配置
一.服务器安装: sudo yum install gcc-c++ sudo yum install pcre pcre-devel sudo yum install zlib zlib-devel ...
- mysql 约束条件介绍
mysql 约束条件介绍 约束条件与数据类型的宽度一样,都是可选参数 作用:用于保证数据的完整性和一致性主要分为: PRIMARY KEY (PK) 标识该字段为该表的主键,可以唯一的标识记录 FO ...
- centos linux系统日常管理复习 CPU物理数逻辑核数,iftop ,iotop ,sar ,ps,netstat ,一网卡多IP,mii-tool 连接,ethtool速率,一个网卡配置多个IP,mii-tool 连接,ethtool速率 ,crontab备份, 第十八节课
centos linux系统日常管理复习 物理CPU和每颗CPU的逻辑核数,uptime ,w,vmstat,iftop ,iotop ,sar ,ps,netstat ,一个网卡配置多个IP,mii ...
- C#基础整理(二)
1.变量类型int.double.string.char.bool.decimal变量使用规则:先声明,再赋值,最后使用 2.命名规范:Camel:第一个单词首字母小写,其他单词首字母大写,其余字母小 ...
- 004-spring cache-声明性的基于XML的缓存
一.概述 如果注释不是选项(不能访问源代码或没有外部代码),可以使用XML进行声明式缓存.因此,不是注释用于缓存的方法,而是从外部指定目标方法和缓存指令(类似于声明式事务管理建议). <!-- ...
- Openstack(十六)实现内外网结构
类似于阿里云ECS主机的内外网(双网卡不通网段)的结构,最终实现内外网区分隔离. https://www.aliyun.com/product/ecs/?utm_medium=text&utm ...
- WebKit.net最简单使用方法
WebKit.net是对WebKit的.Net封装,使用它.net程序可以非常方便的集成和使用webkit作为加载网页的容器.这里介绍一下怎么用它来显示一个网页这样的一个最简单的功能. 第一步: 下载 ...
- [golang note] 协程基础
协程概念 √ 协程通常称为coroutine,在golang中称为goroutine. √ 协程本质上是一种用户态线程,它不需要操作系统来进行抢占式调度,在实际实现中寄存在线程之中. √ 协程系统开销 ...