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> 

原文地址:https://www.cnblogs.com/meihao1203/p/9176085.html

时间: 2024-08-30 10:17:58

DOM之一些小实验demo的相关文章

Hadoop之词频统计小实验(基于单节点伪分布)

声明:1)本文由我bitpeach原创撰写,转载时请注明出处,侵权必究. 2)本小实验工作环境为Ubuntu操作系统,hadoop1-2-1,jdk1.8.0. 3)统计词频工作在单节点的伪分布上,至于真正实际集群的配置操作还没有达到,希望能够由本文抛砖引玉. (一)Hadoop的配置修正 网上有很多Hadoop的配置教程,可自行寻找,这一部分主要是根据自身实际情况,结合自身特点,设置Hadoop.因为有时候根据别人的教程,设置总是不成功,因为别人的教程依赖于别人的软件或操作环境特点. 本部分也

json小实验

看了汤姆大叔的博客http://www.cnblogs.com/TomXu/archive/2012/01/11/2311956.html 博客原文: 我认为很多JavaScript开发人员都错误地把JavaScript对象字面量(Object Literals)称为JSON对象(JSON Objects),因为他的语法和JSON规范里描述的一样,但是该规范里也明确地说了JSON只是一个数据交换语言,只有我们将之用在string上下文的时候它才叫JSON. // 这是JSON字符串 var fo

DCDC纹波小实验

关于使用示波器测试纹波的注意事项 使用示波器的AC耦合方式测量 由于示波器的头套容易引人噪声,因此在测试前必需把探头的头套去掉 因为电源的高频噪声很容易通过小电感就可以滤掉,因此更关心的是中低频的噪声.测试时将示波器的带宽限制调到尽可能的低(20MHz),避免从表笔引入噪声(我之前就吃过这方面的亏) DCDC后端接LDO AMS1117-5V的Datasheet上要求的最低压差(VIN-VOUT)为1.1V到1.25V,这就要求输入要大于5V+1.1V=6.1V,如果输入不满足这个条件会怎么样呢

初识句柄操作(控制台窗口小实验)

今日学习了控制台使用句柄操作的方法. 我们都知道,使用iostream也可以向屏幕中输出语句. 但它们只能实现基本的输入输出 操作,对于控制台窗口界面的控制却无能为力,而且不能与stdio.h和conio.h友好相处,因为iostream和它们是C++两套不同的输入. 因此,我们需要句柄类来帮助我们完成这个操作. 下面直接上练习小代码,为贪食蛇清屏的小片段. 经一番查找,习得基本用法. 1 void clrscr(void) { 2 //控制台窗口信息类型 存有缓冲区大小 当前光标位置 窗口显示

留言本小实验

实验目的: 利用PHP实现发布留言,并存在txt文本文件中,还可以从文本文件中读取留言,并显示在网页上. 实验代码: 先要用个表单提交留言,写一个简单的html如下: 1 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"> 2 <html xmlns="http://www

ES6小实验-let和const(2)

继续小实验,上次写到块级作用域,那么为什么需要块级作用域呢?书中给了两个场景: 1.没有块级作用域,内层变量可能会覆盖外层变量.举例: var tmp = new Date() function f() { console.log(tmp) if(false) { var tmp = "hello world" } } f();//undefined 内层的tmp变量把外层的tmp变量覆盖,所以输出结果为undefined 2.用来计数的循环变量泄露为全局变量,举例: var s =

关于java中equals与==的区别的小实验

java中equals与==经常容易混淆,简单一点说就是equals比较的是值是否相等,是一种方法,==比较的是二者是都为同一对象,是一种操作符. 做了几个小实验比较结果. 实验一: String str1="ab": String str2="ab": System.out.println(s1==s2)://trueSystem.out.println(str1.equals(str2));//true 这里的str1与str2都指向了常量池中的同一对象,所以S

ES6小实验-字符串的扩展

ES6里面的对字符串的扩展实际上就是增加了一些方法,使对字符串的操作更加完善,下面做几个小实验来验证下: includes(): 返回布尔值,表示是否找到了参数字符串,支持第二的参数,表示开始的位置 'use strict'; var s = 'Hello world!'; console.log(s.includes('Hello'));//true startsWith(): 返回布尔值,表示参数字符串是否在源字符串的头部,支持第二的参数,表示开始的位置 'use strict'; var

1.类的加载机制_继承类的加载(一个小的Demo)说明

今天我们先来一个小的Demo来了解类的加载顺序. 1 public class ClassLoaderTest { 2 public static void main(String[] args) { 3 System.out.println("*******************测试类的加载顺序开始*******************"); 4 new SubClass(); 5 System.out.println("*******************测试类的加载