使用if else 容易犯的错

 1  success: function (data) 
2 {debugger
3 $.fn.zTree.init($("#ulZTree"), setting, eval(data));
4 var treeObj = $.fn.zTree.getZTreeObj("ulZTree");
5 var nodes ;
6 if('<%=Request["action"]%>'=="add")
7 {
8 nodes = treeObj.getNodeByParam("id", '<%=Request["id"]%>', null);//获取头个符合的节点,然后在获取该节点的子节点 never used getNodesByParam method
9 if (nodes.childs.length>0){
10 treeObj.expandNode(nodes.childs[0], true, true, true);
11 treeObj.selectNode(nodes.childs[0]);
12 $("#ifrightGrid").attr("src", "PersionGridInfo.aspx?randomParm="+Math.random()+"&tabnm=StrongWater.dbo.Person_B&DeptCd="+nodes.childs[0].id);
13 }
14 }
15 if('<%=Request["action"]%>'=="edit")
16 {
17 nodes = treeObj.getNodeByParam("id", '<%=Request["id"]%>', null);
18 if (nodes!=null){
19 treeObj.expandNode(nodes, true, true, true);
20 treeObj.selectNode(nodes);
21 $("#ifrightGrid").attr("src", "PersionGridInfo.aspx?randomParm="+Math.random()+"&tabnm=StrongWater.dbo.Person_B&DeptCd="+nodes.id);
22 }
23 }
24 else
25 {
26 nodes = treeObj.getNodeByParam("pId", "-1", null);//一定要-1,而不是0.....
27 if (nodes.childs.length>0){
28 treeObj.expandNode(nodes.childs[0], true, true, true);
29 treeObj.selectNode(nodes.childs[0]);
30 $("#ifrightGrid").attr("src", "PersionGridInfo.aspx?randomParm="+Math.random()+"&tabnm=StrongWater.dbo.Person_B&DeptCd="+nodes.childs[0].id);
31 }
32 }

曾经在很久以前犯过一次类似的错,没想到现在又犯了。 愿意是:
  如果为add执行代码体里面的代码,如果是eidt 则执行另外一段,如果两者都不是,执行else。
  那么实际上执行的结果是,如果为add执行完,跳出来又执行了else代码。
  实际上BUG产生的时候都知道为什么,做的过程中却不知不觉的犯错。也许是当时编码时候有些迷糊,编码的时候,需要保持一个清晰的逻辑关系的头脑。当然,个人觉得用switch,case 方式可以避免这种迷糊。
原文地址:https://www.cnblogs.com/wanglee/p/2348060.html