javascript事件机制实例学习

发布时间:2020-01-17编辑:脚本学堂
有关javascript事件机制的例子,通过父窗体与子窗体间信息的传递,掌握js事件机制的用法。

 1、父窗体html文档:
 

复制代码 代码示例:

<html>
<head>
<title>学生管理 - javascript事件机制 - www.xingzuo51.com</title>
<link rel="stylesheet" type="text/css"  href="css/table.css" />
<script language="javascript" type="text/javascript">
//添加学生信息  addStuInfo
function addStuInfo(){

//调用模式窗体,在模式窗体中输入学生的信息,然后传递给父窗体。
var result = window.showModalDialog("addinfo.html", , "dialogwidth:800px;dialogheight:300px");//result接收一个数组对象
//alert(result: + result[0]); //输出返回值,result返回的不是一个字符串,而是一个数组
/以下用于判断模式add页面中所有框都为空时,不用在主窗体中执行加一行操作
var flag = 0;
for (i in result) {
if (result[i].match(/^s*$/)) {
flag++;
alert(flag + ":" + result[i]);

}
}
if (flag == 4) return false;
//获取模式窗体的数据
if (result != null || result != undefined) {//

//alert( result:+result[0] );//输出返回值数组中的第一个值
addRow( result,document.getElementById( "myTable" ) );//向addRow方法中传两个参数,一个为返回的结果,一个为要操作的table
}
}

//在当前的表中添加一行数据
function addRow( result,myTable ){

//alert( myTable );
//tbody
var tbody = document.createElement( "tbody" );//每次有一次条新的记录,就加入一个tbody标签到table中,tbody中可能加多个tr

var tr = document.createElement( "tr" );//创建一个tr标签

//添加4个td,
for( i = 0; i < result.length;i++ ){//根据结果创建相应数目的td

td = document.createElement( td );

td.innerHTML = result[i];//对td进行赋值

//add
tr.appendChild( td );//将td添加到tr的后面
}

//add
tbody.appendChild( tr );//将tr添加到tbody的后面
myTable.appendChild(tbody); //将建好的tbody添加到要显示的的表格中,
//以上其实就在通过document对象创建html的过程
//注册事件        ------------------//给每次创建的tr行建立事件触发器
tr. = function(){///////鼠标移上时

tr.style.backgroundColor = "#abcdef";//背景颜色
tr.title = "单击可进行修改!";//提示信息
};

tr. = function(){///鼠标释放后

tr.style.backgroundColor = "";
};

//注册单击事件
tr.onclick = function(){///鼠标单击时

//alert();

//把当前选中的数据传递给模式窗体,在模式窗体中显示当前行数据,  单元格集合 cells

//alert( tr.cells[0].innerHTML );

var array = new Array(5);//建立临时的数组存放要传给模式对话框的数据

for( i = 0; i < tr.cells.length; i++ ){

array[i] = tr.cells[i].innerHTML;//选中行的单元格中的内容放入临时数组
}

//alert( array[2] );
array[4] = tr;//把当前行对像传递给模式窗体,修改数据时直接通过模式窗体修改tr中的td

//调用模式窗体,修改数据
window.showModalDialog( "addinfo.html",array,"dialogwidth:800px;dialogheight:300px" );

};
}
</script> 
 </head>
<body>
<center>
<hr>
<form>
<table border="3" id="myTable">
<caption>学生信息管理</caption> 

<tr>
<td ><input type="button" value="添加" onClick="addStuInfo()"/>
<input type="button" value="删除" />
</td>
</tr>

<tr>
<th>姓名</th>
<th>年龄</th>
<th>性别</th>
<th>学校</th>
<th>是否删除</th>

</tr>    

</table>

</form>
</center>
</body>
</html>

2、子窗体html文档:
 

复制代码 代码示例:

<html>
<head>
<title>添加学生信息 - www.xingzuo51.com</title>
<link rel="stylesheet" type="text/css"  href="css/table.css" />
<script language="javascript" type="text/javascript">
var obj = null;

//传递当前表单的数据给父窗体
function addInfo(){

if( !obj ){//obj为空时

var array = new Array();
array[0] = document.getElementById( "stuName" ).value;
array[1] = document.getElementById( "stuAge" ).value;
array[2] = document.getElementById( "stuSex" ).value;
array[3] = document.getElementById( "stuSchool" ).value;

//返回给父窗体
window.returnValue = array;

}else{//直接修改父窗体中的tr

obj.cells[0].innerHTML =  document.getElementById( "stuName" ).value;
obj.cells[1].innerHTML =  document.getElementById( "stuAge" ).value; 
obj.cells[2].innerHTML =  document.getElementById( "stuSex" ).value; 
obj.cells[3].innerHTML =  document.getElementById( "stuSchool" ).value; 
}

//关闭当前模式窗体
window.close();
}

//获取父窗体传递的数据。
function showInfo(){

//alert();

//获取父窗体中的数据
var array = window.dialogArguments;

alert( array.length );//打印父窗体传过来的数据的长度
if (array.length > 0) {//如果父窗体传了数据过来,将调用修改
document.getElementById( "stuName" ).value = array[0];
document.getElementById( "stuAge" ).value = array[1];
document.getElementById( "stuSex" ).value = array[2];
document.getElementById( "stuSchool" ).value = array[3];

obj = array[4];//父窗体中的tr对像
}

}
</script>
</head>
<body onLoad="showInfo()"> 
<center>
<hr>
<form>
<table border="1">
<caption>添加学生信息</caption>
<tr>
<td>姓名</td>
<td><input type="text" id="stuName"/></td>
</tr>
<tr>
<td>年龄</td>
<td><input type="text" id="stuAge"/></td>
</tr>
<tr>
<td>性别</td>
<td><input type="text" id="stuSex"/></td>
</tr>
<tr>
<td>学校</td>
<td><input type="text" id="stuSchool"/></td>
</tr>
<tr>
<td>操作</td>
<td><input type="button" value="确定" onClick="addInfo()" />
<input type="button" value="关闭" onClick="window.close()"  />
</td>
</tr>                
</table>           
</form>
</center>
</body>
</html>