onclick事件如下:
<input type ='button' onclick=a();b();c();/>a()删除table中某一行,b(),c()执行整个document的input域的计算操作。当onclick操作只有a()的时候,删除一行很快,但加上b(),c()后,删除一行速度很慢了。b(),c()计算速度慢属于正常。
但我觉得应该是先执行完a()后再执行b,c,这时候行已经删除了,无论b,c怎么慢都不会影响到行的删除。好像是先执行完b,c再执行a一样。怎么回事呢?附:
行的结构大概如下:
<tr><td><input type='hidden' name='a'/>
        <input type='hidden' name='b'>
        <input type='hidden' name='c'>
        <input type='hidden' name='d'>
        <input type='hidden' name='e'>
        <input type='hidden' name='f'>
    </td>
    <td><input type='hidden' name='g'></td>
    <td><input type='hidden' name='h'></td>
    <td><input type='hidden' name='1'></td>
    <td><input type='hidden' name='2'></td>
    <td><input type='hidden' name='3'></td>
</tr>

解决方案 »

  1.   

    在a方法的最后调用用
    setTimeout("b()", 100)
    setTimeout("c()", 100)
    <input type ='button' onclick="a()"/> 或者将setTimeout写在onclick里也可以
      

  2.   

    这样?function a(){   //你的代码
        b();
        c();}
      

  3.   

    <input type ='button' onclick="a();b();c();"/> 
    <table>
    <tr> <td> <input type='hidden' name='a'/>
            <input type='hidden' name='b'>
            <input type='hidden' name='c'>
            <input type='hidden' name='d'>
            <input type='hidden' name='e'>
            <input type='hidden' name='f'>
        </td>
        <td> <input type='hidden' name='g'> </td>
        <td> <input type='hidden' name='h'> </td>
        <td> <input type='hidden' name='1'> </td>
        <td> <input type='hidden' name='2'> </td>
        <td> <input type='hidden' name='3'> </td>
    </tr> 
    </table>
    <style type="text/css">
    /* <![CDATA[ *//* ]]> */
    </style><script type="text/javascript">
    /*<![CDATA[*/
    function a(){alert('a')};
    function b(){alert('b')};
    function c(){alert('c')};
    /*]]>*/
    </script>
      

  4.   

    我想将onclick事件变成onchange事件来执行a,b,c .
    test(){
      a();
      b();
      c();
    }
    <input name='input1' type='text'  onchange='test()'/>
    因为b,c执行的时间比较长,能不能执行完a后就让让input1失去焦点,可以让用户感觉不到b,c的执行
      

  5.   

    用setTimeout延迟执行就可以让用户感觉不到了
      

  6.   

    function deletePlanItem(obj,splitNumber,groupTypeCode) {
    var row = obj.parentElement.parentElement;
    var table = row.parentElement;
    var rowIdx = row.rowIndex;
     if(splitNumber != 0){
      if(row.cells[1].children[2].value == 0){
      for(var idx = 0; idx < splitNumber; idx++){
    table.deleteRow(rowIdx);
    }
      }else{
    row.cells[1].children[2].value = row.cells[1].children[2].value*(-1);
    row.style.display = "none";
      for(var idx = 1; idx < splitNumber; idx++){
    table.deleteRow(row.nextSibling.rowIndex);
    }
    }
    eval("gbl_"+groupTypeCode+"--");
     }else{
      if(row.cells[1].children[2].value == 0){
    table.deleteRow(rowIdx);
      }else{
    row.style.display = "none";
    row.cells[1].children[2].value = row.cells[1].children[2].value*(-1);
    }
    }
    refreshRowNum(table,splitNumber,groupTypeCode);
    }
    function refreshRowNum(oTable,splitNumber,groupTypeCode) {
    var j = 1;
     if(splitNumber != 0){
    for (var i = 1; i < oTable.rows.length-1; i++) {
    var oRow = oTable.rows[i];
    if(oRow.style.display != "none" && oRow.cells[0].rowSpan == splitNumber){
      var tdHtml = oRow.cells[1].innerHTML;
      var sub_tdHtml = tdHtml.substr(0,tdHtml.lastIndexOf('>')+1);
    oRow.cells[1].innerHTML = sub_tdHtml + j;
    j++;
    }
    }
    eval("gbl_"+groupTypeCode+"=j");
     }else{
    for (var i = 1; i < oTable.rows.length-1; i++) {
    var oRow = oTable.rows[i];
    if(oRow.style.display != "none"){
      var tdHtml = oRow.cells[1].innerHTML;
      var sub_tdHtml = tdHtml.substr(0,tdHtml.lastIndexOf('>')+1);
    oRow.cells[1].innerHTML = sub_tdHtml + j;
    j++;
    }
    }
    }
    }只发一段吧,这是函数a()的内容