标签:
DHTML技术使用的基本思路:
1. 用标签封装数据---html范畴
2. 定义样式---css范畴
3. 明确事件源、事件和要处理的节点---dom范畴
4. 明确具体的操作方式,其实就是事件的处理内容(过程)---js范畴
1、实现功能:点击菜单,显示菜单下的内容,再次点击,隐藏内容(允许和不允许同时打开多个菜单项)
<html>
<head>
<title>DHTML技术演示---菜单列表1</title>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<style type="text/css">
/*老版本的IE支持,新版本不支持了
dl{
height:18px;
overflow:hidden;
}*/
/*
ul{
//display:none;//不显示
display:block;//块显示
}
*/
table {
/*border:#ff80ff;*/
width:80px;
}
table ul{
list-style:none;
margin:0px;
padding:0px;
background-color:#ff8000;
display:none;
}
table td{
/*border:#0000ff 1px solid;*/
background:#80ff00;
}
table td a:link, table td a:visited{
color:#8080c0;
text-decoration:none;
}
table td a:hover{
color:#0000ff;;
}
.open{
display:block;
}
.close{
display:none;
}
</style>
<script type="text/javascript">
/*当前菜单的开关切换,当点开其他菜单时,此菜单不会关闭
function list(node){
var oTdNode = node.parentNode;
//alert( oTdNode.nodeName);//TD
var oUlNode = oTdNode.getElementsByTagName("ul")[0];
//alert( oUlNode.nodeName);//UL
if( oUlNode.className =="open"){
oUlNode.className ="close";
}else{
oUlNode.className ="open";
}
}
*/
//实现当前菜单开关切换的同时,把其它菜单全部关闭,即只能打开一个菜单
function list(node){
var oTdNode = node.parentNode;
var oUlNode = oTdNode.getElementsByTagName("ul")[0];
//获取菜单表格(tableMenu)对象 下的所有 菜单块(Ul)对象
var oTableNode = document.getElementById("tableMenu");
var arrUlNodes = oTableNode.getElementsByTagName("ul");
//遍历所有菜单块(Ul)对象,分别对它进行开关显示设置
for(var x=0; x<arrUlNodes.length; x++){
if(arrUlNodes[x]==oUlNode && oUlNode.className!="open"){
oUlNode.className ="open";//等价于:arrUlNodes[x].className ="open";
}else{
arrUlNodes[x].className="close";
}
}
}
</script>
</head>
<body>
<table id="tableMenu">
<tr>
<td>
<a href="javascript:void(0)" onclick="list(this)">文件菜单</a>
<ul>
<li>菜单项一</li>
<li>菜单项二</li>
<li>菜单项三</li>
<li>菜单项四</li>
</ul>
</td>
</tr>
<tr>
<td>
<a href="javascript:void(0)" onclick="list(this)">编辑菜单</a>
<ul>
<li>菜单项一</li>
<li>菜单项二</li>
<li>菜单项三</li>
<li>菜单项四</li>
</ul>
</td>
</tr>
<tr>
<td>
<a href="javascript:void(0)" onclick="list(this)">调试菜单</a>
<ul>
<li>菜单项一</li>
<li>菜单项二</li>
<li>菜单项三</li>
<li>菜单项四</li>
</ul>
</td>
</tr>
</table>
</body>
</html>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>列表菜单</title>
<style type="text/css">
#newsid ul{
list-style:none;
}
#newslist li{
float:left;
width:180px;
}
#newslist li ul{
margin:0px;
padding:0px;
}
#newslist li ul li{
line-height:25px;
}
#newslist li a{
display:block;
color:#ffffff;
background-color:#0066cc;
text-decoration:none;
line-height:25px;
text-align:center;
}
#newslist li a:hover{
color:#0066cc;
background-color:#999999;
}
#newslist li ul a{
color:#000000;
background-color:#0099ff;
}
#newslist li ul li a:hover{
color:#0066ff;
background-color:#999999;
}
#newslist li ul{
display:none;
}
</style>
<script type="text/javascript">
function list(liNode){
var ulNode = liNode.getElementsByTagName("ul")[0];
with(ulNode.style){
display = display=="block"?"none":"block";
}
}
</script>
</head>
<body background="bg-img.jpg">
<!-- 制作一个下拉菜单:1)封装数据 2)定义基本样式 -->
<div id="newsid">
<ul id="newslist">
<li onmouseover="list(this)"; onmouseout="list(this)" >
<a href="javascript:void(0)">城院新闻</a>
<ul style="display:none;">
<li><a href="http://www.hncu.net/">校园新闻内容摘要</a></li>
<li><a href="http://www.hncu.net/">校园新闻内容摘要</a></li>
<li><a href="http://www.hncu.net/">校园新闻内容摘要</a></li>
<li><a href="http://www.hncu.net/">校园新闻内容摘要</a></li>
</ul>
</li>
<li onmouseover="list(this)"; onmouseout="list(this)" >
<a href="javascript:void(0)">大学新闻</a>
<ul style="display:none;">
<li><a href="http://www.hncu.net/">大学新闻内容摘要</a></li>
<li><a href="http://www.hncu.net/">大学新闻内容摘要</a></li>
<li><a href="http://www.hncu.net/">大学新闻内容摘要</a></li>
<li><a href="http://www.hncu.net/">大学新闻内容摘要</a></li>
</ul>
</li>
<li onmouseover="list(this)"; onmouseout="list(this)" >
<a href="javascript:void(0)">社会新闻</a>
<ul style="display:none;">
<li><a href="http://www.hncu.net/">社会新闻内容摘要</a></li>
<li><a href="http://www.hncu.net/">社会新闻内容摘要</a></li>
<li><a href="http://www.hncu.net/">社会新闻内容摘要</a></li>
<li><a href="http://www.hncu.net/">社会新闻内容摘要</a></li>
</ul>
</li>
<li onmouseover="list(this)"; onmouseout="list(this)" >
<a href="javascript:void(0)">就业新闻</a>
<ul style="display:none;">
<li><a href="http://www.hncu.net/">就业新闻内容摘要</a></li>
<li><a href="http://www.hncu.net/">就业新闻内容摘要</a></li>
<li><a href="http://www.hncu.net/">就业新闻内容摘要</a></li>
<li><a href="http://www.hncu.net/">就业新闻内容摘要</a></li>
</ul>
</li>
</ul>
</div>
</body>
</html>
实现功能:将文字设置为超链接,用来设置文本的字体
1、通过获取文本的节点,单独设置样式中的字体和颜色
2、通过获取文本的节点,设置此节点的className,与导进的css样式中的通过className方式设置的样式对应起来,从而实现对文本的字体设置
3、写超链接时href=""若为空,默认调本地文件地址,即弹出文件夹,若写成:href=“javascript:void(0)”则不会开新窗口,停在原处,若有其他操作也不会干扰他们进行;还有一种href=“#”不建议使用,会在地址后加上"#"号
<html>
<head>
<title>DHTML技术演示---新闻字体3--换套装</title>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<link rel="stylesheet" type="text/css" href="1.css" id="linkChgSuit">
<style type="text/css">
span:hover{
background-color:#ff0000;
cursor:hand;
}
</style>
<script type="text/javascript">
//更改类样式
function changeFont(sClass){
var oNewsDiv = document.getElementById("newsDiv") ;
//利用js+dom的方式来更改节点的样式---class属性
oNewsDiv.className = sClass;
}
//换套装
function changeSuit(sNum){
var oLink = document.getElementById("linkChgSuit");
oLink.href=sNum+".css";
}
</script>
</head>
<body>
<a href="javascript:void(0)" onclick="changeFont('max')"> 大字体</a>
<a href="javascript:void(0)" onclick="changeFont('norm')"> 中字体</a>
<a href="javascript:void(0)" onclick="changeFont('min')"> 小字体</a>
<br/>
<span onclick="changeSuit('1')">风格1</span>
<span onclick="changeSuit('2')">风格2</span>
<hr/>
<!--先用html的方式测试一下,然后再用js+dom
<div id="newsDiv" class="norm">
-->
<div id="newsDiv">
5月31日下午14:30,副校长在电信楼视频会议室,为学生处、团委、计划财务处、信息科学与工程学院和体育学院全体师生党员上了一堂题为“讲政治,有信念,做合格党员”的党课。
何振阐述了“讲政治,有信念”的重要性,并讲述了如何才能把握“讲政治,有信念”。他认为,党员应当从把握“讲政治,有信念”的深刻内涵、核心要义和方法路径这三个方面入手。他指出,践行“讲政治,有信念”,必须将其与高校管理、教学、科研相结合,运用到实践当中去,“办人民满意的大学”,并结合学校具体情况进行了深入的分析。<br/>
(信息科学与工程学院)
</div>
</body>
</html>css样式:1.css.max{
color:#808080;
font-size:28px;
background-color:#9ce9b4;
}
.norm{
color:#000000;
font-size:20px;
/*background-color:#cdd8d0;*/
}
.min{
color:#ff0000;
font-size:16px;
background-color:#f9fac2;
}css样式:2.css.max{
color:#808080;
font-size:28px;
background-image:url(img/back1.jpg);
}
.norm{
color:#000000;
font-size:20px;
background-image:url(img/back2.jpg);
}
.min{
color:#ff0000;
font-size:16px;
background-image:url(img/back3.jpg);
}
1、创建表格
1)通过DOM树模型,一层一层的建立表格 ------ 最底层的创建方式,费劲,但功能很强
2)利用table中的现有的功能实现的
注:
1、表格的,<table>标签和<tr>标签中间,其实还隐藏着一个<tbody>标签----表格体,<tbody>下面才是<tr>
2、如果<table>和<tr>之间有空格或换行(空格和换行看成文本节点),则table的第一个孩子节点为文本节点,nodeName:"#text"第二个是tbody
3、<tbody>和#text节点是兄弟关系
只要有空白符出现,皆算一个节点
<html>
<head>
<title>DHTML技术演示---表格创建--用table对象和tr对象中现有的方法来操纵表格</title>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<style type="text/css">
table {
border:#ff80ff;
width:600px;
border-collapse:collapse;
}
table td{
border:#0000ff 1px solid;
padding:5px;
}
</style>
<script type="text/javascript">
function createTable(){
var oTableNode = document.createElement("table");//创建表格对象
var oTrNode = oTableNode.insertRow();//往表格对象中插入一个tr对象(空行),并返回该tr对象
var oTdNode = oTrNode.insertCell();//往tr对象中插入一个Cell即td对象
oTdNode.innerHTML="单元格中的内容";
document.getElementsByTagName("div")[0].appendChild(oTableNode);
}
function createTable2(){
var oTableNode = document.createElement("table");//创建表格对象
//多行多列的表格,如5*6
for(var x=1;x<=5;x++){
var oTrNode = oTableNode.insertRow();//往表格对象中插入一个tr对象(空行),并返回该tr对象
for(var y=1;y<=8;y++){
var oTdNode = oTrNode.insertCell();//往tr对象中插入一个Cell即td对象
oTdNode.innerHTML="单元格"+x+"-"+y+"中的内容";
}
}
document.getElementsByTagName("div")[0].appendChild(oTableNode);
}
//用户自定义行号与列号的方式创建表格
function createTable3(){
var oTableNode = document.createElement("table");//创建表格对象
//给表格动态地添加属性(id)
//法1
//oTableNode.id = "tableId";//变量方式
//法2
oTableNode.setAttribute("id","tableId");//函数的方式
//由用户指定行数与列数的表格
//获取用户输入的行数与列数
var rowNum =parseInt(document.getElementsByName("rowNum")[0].value);
var colNum =parseInt( document.getElementsByName("colNum")[0].value);
//健壮性防护
if(isNaN(rowNum) || isNaN(colNum) || rowNum<=0 || colNum<=0 ){
alert("行号和列号必须是大于0的整数");
return;
}
for(var x=1;x<=rowNum;x++){
var oTrNode = oTableNode.insertRow();//往表格对象中插入一个tr对象(空行),并返回该tr对象
for(var y=1;y<=colNum;y++){
var oTdNode = oTrNode.insertCell();//往tr对象中插入一个Cell即td对象
oTdNode.innerHTML="单元格"+x+"-"+y+"中的内容";
}
}
document.getElementsByTagName("div")[0].appendChild(oTableNode);
}
//删除指定的行
function delRow(){
//由指定的id来获取该表格
var oTableNode = document.getElementById("tableId");
//alert(oTableNode.nodeName);
//alert(oTableNode);
//防护
if(oTableNode==null){
alert("表格不存在!");
return;
}
//删除行的处理代码
//获取用户输入的行号
var delRowNum = parseInt(document.getElementsByName("delRowNum")[0].value);
//alert(delRowNum);
//行号的健壮性防护
if(isNaN(delRowNum) ){
alert("行号必须是数字");
return;
}
if(!(delRowNum>0 && delRowNum<=oTableNode.rows.length)){
alert("该行不存在!");
return;
}
//删除行
oTableNode.deleteRow(delRowNum-1);
}
//删除指定的列
function delCol(){
//由指定的id来获取该表格
var oTableNode = document.getElementById("tableId");
//alert(oTableNode.nodeName);
//alert(oTableNode);
//防护
if(oTableNode==null){
alert("表格不存在!");
return;
}
//删除列的处理代码
//获取用户输入的列号
var delColNum = parseInt(document.getElementsByName("delColNum")[0].value);
//alert(delColNum);
//行号的健壮性防护
if(isNaN(delColNum) ){
alert("列号必须是数字");
return;
}
if(!(delColNum>0 && delColNum<=oTableNode.rows[0].cells.length)){
alert("该列不存在!");
return;
}
//删除列:※※表格中没有现成的删除列的函数,因此只能自己遍历行,然后通过tr对象中的deleteCell来实现
for(var x=0; x<oTableNode.rows.length;x++){
oTableNode.rows[x].deleteCell( delColNum-1 );
}
}
</script>
</head>
<body>
<input type="button" value="创建表格" onclick="createTable()" />
<input type="button" value="创建多行多列表格" onclick="createTable2()" />
<br/><br/><br/>
<!--添加-->
行数:<input type="text" name="rowNum"/>
列数:<input type="text" name="colNum"/>
<input type="button" value="创建表格" onclick="createTable3()" />
<br/><br/><br/>
<!--删除-->
<h3>删除前面由用户指定行列号方式创建的表格</h3> <br/>
行号:<input type="text" name="delRowNum"/>
<input type="button" value="删除行" onclick="delRow()" />
列号:<input type="text" name="delColNum"/>
<input type="button" value="删除列" onclick="delCol()" />
<hr/>
<div></div>
</body>
</html>效果:
3、设置颜色和排序
1)颜色:通过奇偶行号,设置不同的两种颜色,且鼠标放上后变为第三种颜色,离开后恢复原来颜色
2)排序:通过点击表格中的年龄项,表格中的内容通过年龄的大小,进行排序,且年龄项做出相应的变化
<html>
<head>
<title>DHTML技术演示---表格中页面中的显示操纵--行间隔高亮显示</title>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<style type="text/css">
@import url(table.css);
.one{
background:#80ff00;
}
.two{
background:rgb(210,0,0);
}
.over{
background-color:#ffff00;
}
a{
text-decoration:none;
}
</style>
<script type="text/javascript">
function trColor(){
var oTableNode = document.getElementById("dataTable");
var arrTrs = oTableNode.rows;
for(var x=1;x<arrTrs.length; x++){
if(x%2==1){
arrTrs[x].className="one";
}else{
arrTrs[x].className="two";
}
//为每一行动态注册事件处理方法
var oldClassName;
arrTrs[x].onmouseover=function(){
oldClassName=this.className;
this.className="over";
};
arrTrs[x].onmouseout=function(){
this.className=oldClassName;
};
}
}
//onload = trColor();//这种方式赋值就是执行(本例中,这一句没有效果,因为table对象还没出来。但如果把该段代码放在<table>之后则有效果,放表格内也可以,<span style="font-family: Arial, Helvetica, sans-serif;">但<script>标签要包裹其一起放过去</span><span style="font-family: Arial, Helvetica, sans-serif;">),而且只能执行这一个方法</span>
onload = function(){
trColor();
//还可以在这里写其它代码,甚至调用其它函数
};//这种方式只是给onload事件注册响应函数,解析该句代码时函数并没有执行,而是在该事件发生时才会调用。并且可以在function()中调用多个函数.
</script>
<script type="text/javascript">
/*
function over(trNode){
trNode.className="over";
}
*/
var flag = true;
function sortTable(aNode){
var oTableNode = document.getElementById("dataTable");
var arrTrs = oTableNode.rows;
//思路:用一个新的容器来存放表格的行对象数组,并在新数组中进行排序,把排序后的每个元素(行对象)依次添加到表格对象中
//放到新容器arrTrs2中
var arrTrs2=[];
for(var x=1;x<arrTrs.length;x++){
arrTrs2[x-1] = arrTrs[x];
}
//对容器arrTrs2中的元素进行排序
mySort(arrTrs2);
//把排序后的行对象重新加到表格中
if(flag){
for(var x=0;x<arrTrs2.length;x++){
arrTrs2[x].parentNode.appendChild(arrTrs2[x]);
}
aNode.innerHTML="年龄↓";
}else{
for(var x=arrTrs2.length-1;x>=0;x--){
arrTrs2[x].parentNode.appendChild(arrTrs2[x]);
}
aNode.innerHTML="年龄↑";
}
flag = !flag;
trColor();
}
function mySort(arr){
for(var x=0;x<arr.length-1;x++){
for(var y=x+1;y<arr.length;y++){
if(parseInt(arr[x].cells[1].innerText) > parseInt(arr[y].cells[1].innerText)){
var temp = arr[x];
arr[x] = arr[y];
arr[y] = temp;
}
}
}
}
</script>
</head>
<body>
<table id="dataTable">
<tr>
<th>姓名</th> <th><a href="javascript:void(0)" onclick="sortTable(this)">年龄</a></th> <th>地址</th>
</tr>
<tr>
<td>张三</td> <td>22</td> <td>湖南长沙</td>
</tr>
<tr>
<td>李四</td> <td>33</td> <td>湖南长沙</td>
</tr>
<tr>
<td>王五</td> <td>21</td> <td>湖南长沙</td>
</tr>
<tr>
<td>Jack</td> <td>20</td> <td>湖南长沙</td>
</tr>
<tr>
<td>Rose</td> <td>43</td> <td>湖南长沙</td>
</tr>
<tr>
<td>Jack</td> <td>53</td> <td>湖南长沙</td>
</tr>
<tr>
<td>Rose</td> <td>35</td> <td>湖南长沙</td>
</tr>
<tr>
<td>Jack</td> <td>13</td> <td>湖南长沙</td>
</tr>
<tr>
<td>Rose</td> <td>30</td> <td>湖南长沙</td>
</tr>
</table>
</body>
</html>
实现功能:类似如邮箱中对邮件的管理:
选择邮件,删除邮件,全选,反选,取消全选等
<html>
<head>
<title>DHTML技术演示---checkbox的使用2</title>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<style type="text/css">
@import url(table.css)/*这个css样式要自己写一个文件导入进来*/
</style>
<script type="text/javascript">
var name;
function trColor(){
var oTableNode = document.getElementById("mailTable");
var collTrNodes = oTableNode.rows;
for(var x=1; x<collTrNodes.length-1;x++){
if(x%2==1){
collTrNodes[x].className="one";
}else{
collTrNodes[x].className="two";
}
collTrNodes[x].onmouseover=function(){
name = this.className;
this.className="over";
/*下面这种注册事件的方式也可以
this.onmouseout=function(){
this.className=name;
}
*/
}
collTrNodes[x].onmouseout=function(){
this.className=name;
}
}
}
onload = function(){
trColor();
}
function checkAll(aChkboxNode){
var collMailNodes = document.getElementsByName("mail");
for(var x=0;x<collMailNodes.length;x++){
collMailNodes[x].checked = aChkboxNode.checked;
}
var collChkboxAllNodes = document.getElementsByName("all");
collChkboxAllNodes[0].checked = aChkboxNode.checked;
collChkboxAllNodes[1].checked = aChkboxNode.checked;
}
function checkAllByBtn1(flag){
var collMailNodes = document.getElementsByName("mail");
for(var x=0;x<collMailNodes.length;x++){
collMailNodes[x].checked = flag;
}
var collChkboxAllNodes = document.getElementsByName("all");
collChkboxAllNodes[0].checked = flag;
collChkboxAllNodes[1].checked = flag;
//取消部分选中时的显示样式
collChkboxAllNodes[0].indeterminate=false;
collChkboxAllNodes[1].indeterminate=false;
}
function checkAllByBtn2(){
var collMailNodes = document.getElementsByName("mail");
var n=0;
for(var x=0;x<collMailNodes.length;x++){
collMailNodes[x].checked = !collMailNodes[x].checked;
if( collMailNodes[x].checked ){
n++;
}
}
var collChkboxAllNodes = document.getElementsByName("all");
collChkboxAllNodes[0].indeterminate=false;
collChkboxAllNodes[1].indeterminate=false;
if(n==0){
collChkboxAllNodes[0].checked = false;
collChkboxAllNodes[1].checked = false;
}else if(n==collMailNodes.length){
collChkboxAllNodes[0].checked = true;
collChkboxAllNodes[1].checked = true;
}else{//部分选中时的显示样式
collChkboxAllNodes[0].indeterminate=true;
collChkboxAllNodes[1].indeterminate=true;
}
}
//把上面两个函数合在一起
function checkAllByBtn(num){
var collMailNodes = document.getElementsByName("mail");
//取消部分选中时的显示样式
var collChkboxAllNodes = document.getElementsByName("all");
collChkboxAllNodes[0].indeterminate=false;
collChkboxAllNodes[1].indeterminate=false;
var n=0;
for(var x=0;x<collMailNodes.length;x++){
if(num>1){
collMailNodes[x].checked = !collMailNodes[x].checked;
}else{
collMailNodes[x].checked = num;
}
if(collMailNodes[x].checked){
n++;
}
}
if(n==0){
collChkboxAllNodes[0].checked = false;
collChkboxAllNodes[1].checked = false;
}else if(n==collMailNodes.length){
collChkboxAllNodes[0].checked = true;
collChkboxAllNodes[1].checked = true;
}else{//部分选中时的显示样式
collChkboxAllNodes[0].indeterminate=true;
collChkboxAllNodes[1].indeterminate=true;
}
}
function deleteMail(){
if(!confirm("你真的要删除所选邮件吗?")){
return;
}
//获取所有选中的邮件
var collMailChkNodes = document.getElementsByName("mail");
for(var x=0;x<collMailChkNodes.length;x++){
if(collMailChkNodes[x].checked){//选中,则删除
//先拿到tr对象
var oTrNode = collMailChkNodes[x].parentNode.parentNode;
oTrNode.parentNode.removeChild(oTrNode);
//bug:节点容器中,remove之后,长度会变。
x--;//长度修正--还有一种解决方案是:从后往前删
}
}
trColor();
}
</script>
</head>
<body>
<h2>邮件列表</h2>
<table id="mailTable">
<tr>
<th><input type="checkbox" name="all" onclick="checkAll(this)"/>全选</th>
<th>发件人</th> <th>邮件标题</th> <th>时间</th>
</tr>
<tr>
<td><input type="checkbox" name="mail" /></td>
<td>张三</td> <td>邮件标题11</td> <td>2016年6月16日</td>
</tr>
<tr>
<td><input type="checkbox" name="mail" /></td>
<td>李四</td> <td>邮件标题22</td> <td>2016年6月15日</td>
</tr>
<tr>
<td><input type="checkbox" name="mail" /></td>
<td>张四</td> <td>邮件标题33</td> <td>2016年6月14日</td>
</tr>
<tr>
<td><input type="checkbox" name="mail" /></td>
<td>Jack</td> <td>邮件标题44</td> <td>2016年6月18日</td>
</tr>
<tr>
<td><input type="checkbox" name="mail" /></td>
<td>Rose</td> <td>邮件标题55</td> <td>2016年6月25日</td>
</tr>
<tr>
<td><input type="checkbox" name="mail" /></td>
<td>张六</td> <td>邮件标题66</td> <td>2016年6月16日</td>
</tr>
<tr>
<td><input type="checkbox" name="all" onclick="checkAll(this)"/>全选</td>
<td colspan="3">
<!--
<input type="button" value="全选" onclick="checkAllByBtn1(true)">
<input type="button" value="取消全选" onclick="checkAllByBtn1(false)">
<input type="button" value="反选" onclick="checkAllByBtn2()">
-->
<input type="button" value="全选" onclick="checkAllByBtn(1)">
<input type="button" value="取消全选" onclick="checkAllByBtn(0)">
<input type="button" value="反选" onclick="checkAllByBtn(2)">
<input type="button" value="删除所选邮件" onclick="deleteMail()">
</td>
</tr>
</table>
</body>
</html>
<html>
<head>
<title>DHTML技术演示---radio的使用</title>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<style type="text/css">
#contentId{
display:none;
}
ul{
list-style:none;
margin:0px;
}
.open{
display:block;
}
.close{
display:none;
}
</style>
<script type="text/javascript">
function showContent(oNode){
var showDivContent=document.getElementById("contentId");
/*
if (oNode.value=="yes"){
showDivContent.style.display="block";
} else {
showDivContent.style.display="none";
}
*/
with(showDivContent.style){
if (oNode.value=="yes"){
display="block";
} else {
display="none";
}
}
}
function showResult(){
var value=0;
var topicOneRadioNodes=document.getElementsByName("topicOne");
for (var x=0;x<topicOneRadioNodes.length;x++){
if (topicOneRadioNodes[x].checked){
value=parseInt(topicOneRadioNodes[x].value);
break;
}
}
if (!value){
document.getElementById("topicOneErrorInfo").innerHTML="No selection was selected.".fontcolor("red");
return;
}
document.getElementById("topicOneErrorInfo").innerHTML="";
if (value>0&&value<4){
document.getElementById("res_1").className="open";
document.getElementById("res_2").className="close";
} else {
document.getElementById("res_1").className="close";
document.getElementById("res_2").className="open";
}
}
</script>
</head>
<body>
<div>
Do you want to take part in the questionnaire research?<br/>
<input type="radio" name="questionnaire" value="yes" onclick="showContent(this)">yes
<input type="radio" name="questionnaire" value="no" onclick="showContent(this)">no<br/>
</div>
<div id="contentId">
The content of the questionnaire.<br/>
name: <input type="text" name="name"><br/>
telephone: <input type="text" name="telephone">
</div>
<hr/>
<h2>Welcome to character test</h2>
<h3>Topic one</h3>
<span>Which fruit below do you like best.</span>
<ul id="topicOne">
<li><input type="radio" name="topicOne" value="1">Grape</li>
<li><input type="radio" name="topicOne" value="2">Watermelon</li>
<li><input type="radio" name="topicOne" value="3">Apple</li>
<li><input type="radio" name="topicOne" value="4">Mango</li>
<li><input type="radio" name="topicOne" value="5">Cherry</li>
</ul>
<div>
<input type="button" value="Show the result" onclick="showResult()">
<div id="res_1" class="close">1 to 3 scores: you are introversion</div>
<div id="res_2" class="close">more than 4 scores: you are outgoing</div>
</div>
<span id="topicOneErrorInfo"></span>
</body>
</html>1、设置字体颜色
<html>
<head>
<title>DHTML技术演示---selcet的使用</title>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<style type="text/css">
.clrClass{
height:50px;
width:50px;
float:left;
margin-right:30px;
margin-bottom:20px;
}
#text{
clear:left;
}
</style>
<script type="text/javascript">
function changeColor(oDivClrNode){
var colorVal=oDivClrNode.style.backgroundColor;
document.getElementById("text").style.color=colorVal;
}
function changeColor2(){
var oSelectNode=document.getElementsByName("selectColor1")[0];
var oCollOptions=oSelectNode.options;
var colorValue=oCollOptions[oSelectNode.selectedIndex].value;
document.getElementById("text").style.color=colorValue;
}
function changeColor3(){
var oSelectNode=document.getElementsByName("selectColor2")[0];
var oCollOptions=oSelectNode.options;
var colorValue=oCollOptions[oSelectNode.selectedIndex].value;
document.getElementById("text").style.color=colorValue;
}
</script>
</head>
<body>
<div class="clrClass" id="clr1" style="background-color:red" onclick="changeColor(this)"></div>
<div class="clrClass" id="clr2" style="background-color:green" onclick="changeColor(this)"></div>
<div class="clrClass" id="clr3" style="background-color:blue" onclick="changeColor(this)"></div>
<div id="text">
显示效果文字1<br/>
显示效果文字2<br/>
显示效果文字3<br/>
显示效果文字4<br/>
</div>
<hr/>
<select name="selectColor1" onchange="changeColor2()">
<option value="black">--请选择颜色--</option>
<option value="red">红色</option>
<option value="green">绿色</option>
<option value="blue">蓝色</option>
</select>
<hr/>
<select name="selectColor2" onchange="changeColor3()">
<option value="black" style="background-color:black">--请选择颜色--</option>
<option value="red" style="background-color:red"></option>
<option value="green" style="background-color:green"></option>
<option value="blue" style="background-color:blue"></option>
</select>
</body>
</html>
结果:
<html>
<head>
<title>DHTML技术演示---selcet的使用</title>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<script type="text/javascript">
function selectCity(){
var collProvinces ={
"beijing" : ['海淀区','东城区','西城区','朝阳区'],
"zhejiang" : ['杭州','宁波','金华','温州'],
"hunan" : ['益阳','长沙','株洲','湘潭'],
"jiangxi" : ['南昌','九江','萍乡','上饶']
};
var selNode=document.getElementById("provincesId");
var index=selNode.selectedIndex;
var provinceName=selNode.options[index].value;
var arrCities=collProvinces[provinceName];
var cityNode=document.getElementById("citiesId");
cityNode.options.selectedIndex=0;
//把下拉菜单"subselid"中原有的内容清空
//法1
/*
for (var x=1;x<cityNode.length;){//注意,数组删除之后,长度是自动更新的,因此for最后不要用"x++"修正
cityNode.removeChild(cityNode.options[x]);
}
*/
//法2
/*
for (var x=cityNode.length-1;x>0;x--){
cityNode.removeChild(cityNode.options[x]);
}
*/
//法3
cityNode.options.length=1;//长度设置为1 ,那么剩余的选项自动被删掉
for (var x=0;x<arrCities.length;x++){
var optionNode=document.createElement("option");
optionNode.innerHTML=arrCities[x];
cityNode.appendChild(optionNode);
}
}
</script>
</head>
<body>
<select id="provincesId" onchange="selectCity()">
<option>select province</option>
<option value="beijing">北京</option>
<option value="hunan">湖南</option>
<option value="zhejiang">浙江</option>
<option value="jiangxi">江西</option>
</select>
<select id="citiesId">
<option>--select city--</option>
</select>
</body>
</html>结果:3、文件添加和删除
<html>
<head>
<title>DHTML技术演示--file组件--添加与删除附件</title>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<style type="text/css">
table a:link,table a:visited{
text-decoration:none;
color:#ff0000;
}
table a:hover{
color:#0080ff;
}
</style>
<script type="text/javascript">
function addFile(){
var oTableNode=document.getElementById("fileTableId");
var trNode=oTableNode.insertRow();
var tdNode=trNode.insertCell();
tdNode.innerHTML="<input type='file'>";
var tdNodeDel=trNode.insertCell();
//tdNodeDel.innerHTML="<a href='javascript:void(0)' onclick='deleteFile(this)'>deleteFile</a>";
tdNodeDel.innerHTML="<img src='123.jpg' alt='删除附件' onclick='deleteFile(this)'>";
}
function deleteFile(oANode){
var trNode=oANode.parentNode.parentNode;
trNode.parentNode.removeChild(trNode);
}
</script>
</head>
<body>
<table id="fileTableId">
<tr>
<th><a href="javascript:void(0)" onclick="addFile()">addFile</a></th>
</tr>
<!--
<tr>
<td><input type="file"></td>
<td><a href="javascript:void(0)" onclick="deleteFile(this)">deleteFile</a></td>
</tr>
-->
</table>
</body>
</html>
通过正则表达式实现用户注册页面
1、正则表达式定义法1
var reg = /^[0-9]{6}$/; //必须是6个数字,而且必须是6个。多了或少了都不行。
2、正则表达式定义法2
var reg = new RegExp("^[0-9]{6}$");
3、细节
var reg = new RegExp("[a-z]{4}","i");//带参数,只要包含连续4个字母就行,忽略大小写
var reg = new RegExp("^[a-z]{4}","i");//带参数,必须以连续4个字母开始,忽略大小写
var reg = new RegExp("^[a-z]{4}$","i");//带参数,有且只有连续4个字母,忽略大小写
var reg = / ^\d{6}$ /; //特殊符号不需要转义,外面也不用加引号
var reg = /^[\d\w]{6,9}$/; //只包含6到9个数字或字符,这里不需要转义
3、表单的提交
例:(手动提交,不依赖于form中的submit)<script type="text/javascript">
function mySubmit(){
var oFormNode=document.getElementById("submitInfo");
if (checkUser()){
oFormNode.submit();
}
}
</script><html>
<head>
<title>DHTML技术演示---注册表单的验证且控制提交--前端校验--最终版本</title>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<script type="text/javascript">
function check(name,reg,spanId,okInfo,errInfo){
var value = document.getElementsByName(name)[0].value;
//用正则检验
var oSpanNode = document.getElementById(spanId);
if(reg.test(value)){
oSpanNode.innerHTML=okInfo.fontcolor("green");
return true;
}else{
oSpanNode.innerHTML=errInfo.fontcolor("red");
return false;
}
}
function checkUserName(){
var reg =new RegExp("[a-z]{4}","i") ;//包含4个连续的字母,注意"i"中的双引号不能省略
return check("userName",reg,"userNameSpan","用户名格式正确","用户名格式错误");
}
function checkPwd(){
var reg = new RegExp("^[\\w\\d]{6,9}$");
return check("pwd",reg,"userPwdSpan","密码格式符合要求","密码长度必须是6-9位");
}
function checkPwd2(){//判断第2个密码和第1个是否相同
var flag;
var pwd = document.getElementsByName("pwd")[0].value;
var pwd2 = document.getElementsByName("pwd2")[0].value;
var oSpanNode = document.getElementById("userPwd2Span");
if(pwd==pwd2){
oSpanNode.innerHTML="两次密码一致".fontcolor("green");
flag = true;
}else{
oSpanNode.innerHTML="两次密码不一致".fontcolor("red");
flag = false;
}
return flag;
}
function checkMail(){
var reg = /^\w+@\w+(\.\w+)+$/i;
return check("mail",reg,"userMailSpan","","邮箱格式不正确");
}
function checkUser( ){//控制表单的提交
if(checkUserName() && checkPwd() && checkPwd2() && checkMail() ){
return true;
}else{
return false;
}
}
</script>
</head>
<body>
<form action="/dhtmlProj/servlet/RegServlet" onsubmit="return checkUser();">
用户名: <input type="text" name="userName" onblur="checkUserName()"/>
<span id="userNameSpan"></span>
<br/>
输入密码:<input type="text" name="pwd" onblur="checkPwd()"/>
<span id="userPwdSpan"></span>
<br/>
确认密码:<input type="text" name="pwd2" onblur="checkPwd2()"/>
<span id="userPwd2Span"></span>
<br/>
邮件地址:<input type="text" name="mail" onblur="checkMail()"/>
<span id="userMailSpan"></span>
<br/>
<input type="submit" value="注册">
</form>
</body>
</html>结果:
标签:
原文地址:http://blog.csdn.net/x121850182/article/details/51702347