我晕 我搞定了 我这写法烂的吓死人.. 郁闷 就一个递归就搞定了. 希望下次可以学习到好的写法. function setBtnEvent(tdid,txtnum,obj,objid) { var tab=$(tdid); var btns=new Array(); var fields=new Array(); var fieldCount=0; for(var field in obj) { if(obj.hasOwnProperty(field)) { if(field==objid)continue; fields[fieldCount]=field; fieldCount++; } }
if(btns[i].innerText=="我要修改!")//根据按钮里的文本判断是什么类型按钮.
{
btns[i].onclick==btncall(btn[i]);
//精简的话,就是这里的值怎么传?我传btn[i]进去应该是没有错的? 可是我调试的时候他总是报btn未定义..就是btncall内部的变量名未定义..可能是我参数没传进去..
}
//btncall 就是call下面这个函数啊.
function btncall(btn)//修改按钮的函数过程
{
var tr=btn.parentElement.parentElement;//取到按钮所对应的行.
btn.innerText="我改好了!!";//把按钮名称变为这个
btn.onclick=function()//修改当前按钮的函数过程,这个过程是"我改好了"的函数过程.
{
/*remote call*/
this.innerText="我要修改!";
//print(obj);
for(var j=0;j<tr.cells.length;j++)//这里的作用是,遍历一行中的文本框,把文本框封装到对应的js对象中
{
var shuru=tr.cells(j).all(0);
if(shuru.tagName=="INPUT" && shuru.inminks!= undefined)
{
for(var ziduan in obj)
{
if(obj.hasOwnProperty(ziduan))
{
if(ziduan==objid)obj[ziduan]=tr.id;
if(ziduan==shuru.inminks)
{
obj[ziduan]=shuru.value;
tr.cells(j).innerText=shuru.value;
tr.cells(j).removeChild(shuru);
//此处还得加上一个函数过程,就是当前的btncall.修改回按钮的onclick事件响应.
}
}
}
}
}
};
for(var k=0;k<txtnum;k++)//此处代码是根据js对象的字段名数组,依次创建文本框
{
if(fields[k]==tr.cells[k].minks)
{
var editor=document.createElement("input");
editor.type="text";
editor.value=tr.cells[k].innerText;
editor.setAttribute("inminks",tr.cells[k].minks);
tr.cells[k].innerText="";
tr.cells[k].appendChild(editor);
}
}
/*then call update method*/
}//楼上的是什么意思呢? 我这样子传值不对吗?????
判断条件的时候才是用"=="的,赋值一般都用单"="的。
而且,我觉得你这么写,赋过去的是结果,而不是对象。
先定义一下吧。
是這個裏面的btn未定義?
btns[i]和btn[i]有區別伐?還是說他們本身就是同一個?
是btns[i] 不好意思我 太粗心了! 可是还是报错!"缺少对象"!
我晕啊, ie7有没有什么好的调试器 这报错报的太让人跳楼了..
我这写法烂的吓死人..
郁闷 就一个递归就搞定了.
希望下次可以学习到好的写法. function setBtnEvent(tdid,txtnum,obj,objid)
{
var tab=$(tdid);
var btns=new Array();
var fields=new Array();
var fieldCount=0;
for(var field in obj)
{
if(obj.hasOwnProperty(field))
{
if(field==objid)continue;
fields[fieldCount]=field;
fieldCount++;
}
}
btns=tab.getElementsByTagName("button");
for(var i=0;i<btns.length;i++)
{
if(btns[i].innerText=="我要修改!")
{
btns[i].onclick=function()
{
var tr=this.parentElement.parentElement;
this.innerText="我改好了!!";
this.onclick=function()
{
/*remote call*/
this.innerText="我要修改!";
setBtnEvent(tdid,txtnum,obj,objid);
for(var j=0;j<tr.cells.length;j++)
{
var shuru=tr.cells(j).all(0);
if(shuru.tagName=="INPUT" && shuru.inminks!= undefined)
{
for(var ziduan in obj)
{
if(obj.hasOwnProperty(ziduan))
{
if(ziduan==objid)obj[ziduan]=tr.id;
if(ziduan==shuru.inminks)
{
obj[ziduan]=shuru.value;
tr.cells(j).removeChild(shuru);
tr.cells(j).innerText=shuru.value;
}
}
}
}
}
};
for(var k=0;k<txtnum;k++)
{
if(fields[k]==tr.cells[k].minks)
{
var editor=document.createElement("input");
editor.type="text";
editor.value=tr.cells[k].innerText;
editor.setAttribute("inminks",tr.cells[k].minks);
tr.cells[k].innerText="";
tr.cells[k].appendChild(editor);
}
}
/*then call update method*/
}
}
else if(btns[i].innerText=="我改好了!!")
{
var tr=btns[i].parentElement.parentElement;
this.onclick=function()
{
/*remote call*/
this.innerText="我要修改!";
setBtnEvent(tdid,txtnum,obj,objid);
for(var j=0;j<tr.cells.length;j++)
{
var shuru=tr.cells(j).all(0);
if(shuru.tagName=="INPUT" && shuru.inminks!= undefined)
{
for(var ziduan in obj)
{
if(obj.hasOwnProperty(ziduan))
{
if(ziduan==objid)obj[ziduan]=tr.id;
if(ziduan==shuru.inminks)
{
obj[ziduan]=shuru.value;
tr.cells(j).removeChild(shuru);
tr.cells(j).innerText=shuru.value;
}
}
}
}
}
};
}
else
{
btns[i].onclick=function()
{
if(!confirm("真的要删掉他吗?"))return;
/*then call del method*/
}
}
}
}