关于javascript中一个事件同时调用两个函数的问题
//动态获得单击行号并传给deleteRow();insertRow();functionaddOnClick(){for(varj=0;j<9;j++){documen...
//动态获得单击行号并传给deleteRow();insertRow();
function addOnClick() {
for(var j=0;j<9;j++){
document.getElementById("detail").rows[j].onclick = showRowIndex;
}
}
function showRowIndex() {
rowIIdex = this.sectionRowIndex;
}
//点击后行变色
function changeColor() {
var trs = document.getElementById("detail").getElementsByTagName("tr");
addOnClick();
for(var i=0; i<trs.length; i++) {
trs[i].onclick=function(){
for(var j=0;j<trs.length;j++){
trs[j].style.backgroundColor = "#FFFFFF";
}
this.style.backgroundColor = "green";
}
}
}
//删除行
function deleteRow(rowNum) {
detail.deleteRow(rowNum);
}
function bothOperation() {
//addOnClick();
changeColor();
}
以上都是<head>标签里的javaScript脚本,
下面是在HTML中的调用语句,也就是说我想在加载这个HTML页面的同时调用这两个方法,
<body oncontextmenu=event.returnValue=false onload="bothOperation();" >
问题:
我想用这段代码做的是:在一个表格中,单击一行,这一行会变色,如果我调用deleteRow(rowNum),就会动态删除行,可是这时我遇到了以下问题:我把addOnClick();和changeColor();两种方法都写在bothOperation()这一方法里并调用,可是其中一个老是不起作用,也就是说我把addOnclick()方法给注掉,changeColor()就不起作用;如果把changColor()注掉,addOnclick()就不起作用;如果都不注掉,只有第一个方法起作用,请问我该怎么调用才能让他们都同时起作用,快急死我了…… 展开
function addOnClick() {
for(var j=0;j<9;j++){
document.getElementById("detail").rows[j].onclick = showRowIndex;
}
}
function showRowIndex() {
rowIIdex = this.sectionRowIndex;
}
//点击后行变色
function changeColor() {
var trs = document.getElementById("detail").getElementsByTagName("tr");
addOnClick();
for(var i=0; i<trs.length; i++) {
trs[i].onclick=function(){
for(var j=0;j<trs.length;j++){
trs[j].style.backgroundColor = "#FFFFFF";
}
this.style.backgroundColor = "green";
}
}
}
//删除行
function deleteRow(rowNum) {
detail.deleteRow(rowNum);
}
function bothOperation() {
//addOnClick();
changeColor();
}
以上都是<head>标签里的javaScript脚本,
下面是在HTML中的调用语句,也就是说我想在加载这个HTML页面的同时调用这两个方法,
<body oncontextmenu=event.returnValue=false onload="bothOperation();" >
问题:
我想用这段代码做的是:在一个表格中,单击一行,这一行会变色,如果我调用deleteRow(rowNum),就会动态删除行,可是这时我遇到了以下问题:我把addOnClick();和changeColor();两种方法都写在bothOperation()这一方法里并调用,可是其中一个老是不起作用,也就是说我把addOnclick()方法给注掉,changeColor()就不起作用;如果把changColor()注掉,addOnclick()就不起作用;如果都不注掉,只有第一个方法起作用,请问我该怎么调用才能让他们都同时起作用,快急死我了…… 展开
2个回答
展开全部
addOnClick(); //在这里为每一个tr添加了onclick事件。
for(var i=0; i<trs.length; i++) {
trs[i].onclick=function(){ ...}//在这里为onclick重新赋值(addOnClick方法执行的结果被覆盖掉了。
}
上面的这段代码有问题的(见上面注释)
给你一段为对象添加,删除事件的方法:
function AddEventHandler(oTarget,sEventType,fnHandler)
{
if(oTarget.addEventListener){oTarget.addEventListener(sEventType,fnHandler,false)}
else if(oTarget.attachEvent){oTarget.attachEvent("on"+sEventType,fnHandler)}
else{oTarget["on"+sEventType]=fnHandler}
}
function RemoveEventHandler(oTarget,sEventType,fnHandler)
{
if(oTarget.removeEventListener){oTarget.removeEventListener(sEventType,fnHandler,false)}
else if(oTarget.detachEvent){oTarget.detachEvent("on"+sEventType,fnHandler)}
else{oTarget["on"+sEventType]=null}
}
参数中oTarget为要添加事件的对象(如一个tr),sEventType为要添加的事件类型(如onclick事件的类型为click--用字符串传入),fnHandler为响应改事件的方法(如onclick响应的方法为function1,则传入function1)
增个方法的调用例如:
var td1=document.getElementById("td1");
var clickFunction=function(){...}
function AddEventHandler(td1,"click",clickFunction);
这段代码是兼容IE和FF,如果不需要就利用对象本身的attachEvent和detachEvent方法添加和删除事件,不过只有IE中有这两个方法。不要直接用object.onclick为对象添加事件。
for(var i=0; i<trs.length; i++) {
trs[i].onclick=function(){ ...}//在这里为onclick重新赋值(addOnClick方法执行的结果被覆盖掉了。
}
上面的这段代码有问题的(见上面注释)
给你一段为对象添加,删除事件的方法:
function AddEventHandler(oTarget,sEventType,fnHandler)
{
if(oTarget.addEventListener){oTarget.addEventListener(sEventType,fnHandler,false)}
else if(oTarget.attachEvent){oTarget.attachEvent("on"+sEventType,fnHandler)}
else{oTarget["on"+sEventType]=fnHandler}
}
function RemoveEventHandler(oTarget,sEventType,fnHandler)
{
if(oTarget.removeEventListener){oTarget.removeEventListener(sEventType,fnHandler,false)}
else if(oTarget.detachEvent){oTarget.detachEvent("on"+sEventType,fnHandler)}
else{oTarget["on"+sEventType]=null}
}
参数中oTarget为要添加事件的对象(如一个tr),sEventType为要添加的事件类型(如onclick事件的类型为click--用字符串传入),fnHandler为响应改事件的方法(如onclick响应的方法为function1,则传入function1)
增个方法的调用例如:
var td1=document.getElementById("td1");
var clickFunction=function(){...}
function AddEventHandler(td1,"click",clickFunction);
这段代码是兼容IE和FF,如果不需要就利用对象本身的attachEvent和detachEvent方法添加和删除事件,不过只有IE中有这两个方法。不要直接用object.onclick为对象添加事件。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询