Heim >Web-Frontend >js-Tutorial >Falsche Verwendung von if...else..

Falsche Verwendung von if...else..

高洛峰
高洛峰Original
2016-11-03 17:00:491372Durchsuche

1. Als ich kürzlich js-Code schrieb, um eine Funktion zu vervollständigen, die das vorherige DOM betreibt, habe ich versehentlich den Kontrollkörper if..else.. verwendet. Warum ist es falsch? Werfen Sie einen Blick auf meinen

-Code und Sie werden verstehen:

document.getElementsByClassName('eButton')[0].onclick=function(){
   var checked=document.getElementsByClassName('checked');
     var eButton=document.getElementsByClassName('eButton')[0];
   if(checked.length==0){
    alert('请选择要编辑的联系人!');
     }else{
         if(checked.length >2){
                alert('每次编辑只能选择一条记录');
         }else{
                if(checked[0].childNodes[0].id=='check-all'){
                    var email=checked[1].parentNode.nextElementSibling.nextElementSibling.innerHTML;
                    var name=checked[1].parentNode.nextElementSibling.innerHTML;
                    document.getElementsByClassName('edit_contact_name')[0].value=name;
                    document.getElementsByClassName('edit_contact_email')[0].value=email;
                    var group=checked[1].parentNode.nextElementSibling.nextElementSibling.nextElementSibling
                    if(group.innerHTML !="default"){
                        var group_id=group.getAttribute('group_id')
                        document.getElementsByClassName('edit_contact_group_name')[0].value=id;
                    }
                    $('#edit_contact').modal();
                }else{
                    if(checked.length ==2){
                        alert('每次编辑只能选择一条记录');
                    }else{
                        var email=checked[0].parentNode.nextElementSibling.nextElementSibling.innerHTML;
                        var name=checked[0].parentNode.nextElementSibling.innerHTML;
                        document.getElementsByClassName('edit_contact_name')[0].value=name;
                        document.getElementsByClassName('edit_contact_email')[0].value=email;
                        var group=checked[0].parentNode.nextElementSibling.nextElementSibling.nextElementSibling
                        if(group.innerHTML !="default"){
                            var group_id=group.getAttribute('group_id')
                            document.getElementsByClassName('edit_contact_group_name')[0].value=id;
                        }
                        $('#edit_contact').modal();
                    }
                }
       }
   }
    };

Haha, als ich diese Codes sah, die ich geschrieben habe, hatte ich plötzlich das Gefühl, dass diese Funktion sehr leistungsfähig sein muss. Die ganze Funktion wurde durch if..else.. durcheinander gebracht und ich begann darüber nachzudenken, warum ich if..else verwenden musste

Tatsächlich dachte ich nur, dass es ungefähr drei oder vier verschiedene waren Bedingungen in dieser Logik, die ausgeführt werden müssen, sind drei oder vier Arten von Operationen, und es kann jeweils nur eine Situation ausgeführt werden (die Ausführung erfolgt bis zum Ende der Funktion). Dies ist der Ausführungsablauf des Programms. Nachdem dieser Prozess eingeführt war, begann ich darüber nachzudenken, wie ich den Code so ändern könnte, dass er auf einen Blick klar und leicht zu warten ist. Zu diesem Zeitpunkt dachte ich natürlich an das Schlüsselwort „return“. Nach der Verwendung von „return“ habe ich den folgenden Code:

document.getElementsByClassName('eButton')[0].onclick=function(){
  var checked=document.getElementsByClassName('checked');
    var eButton=document.getElementsByClassName('eButton')[0];
  if(checked.length==0){
    alert('请选择要编辑的联系人!');
    return;
  }
  if(checked.length ==1){
    var email=checked[0].parentNode.nextElementSibling.nextElementSibling.innerHTML;
    var name=checked[0].parentNode.nextElementSibling.innerHTML;
    document.getElementsByClassName('edit_contact_name')[0].value=name;
    document.getElementsByClassName('edit_contact_email')[0].value=email;
    var group=checked[0].parentNode.nextElementSibling.nextElementSibling.nextElementSibling
    if(group.innerHTML !="default"){
     var group_id=group.getAttribute('group_id')
     document.getElementsByClassName('edit_contact_group_name')[0].value=id;
    }
      $('#edit_contact').modal();
      return;
  }
  if(checked.length ==2){
    if(checked[0].childNodes[0].id=='check-all'){
      var email=checked[1].parentNode.nextElementSibling.nextElementSibling.innerHTML;
      var name=checked[1].parentNode.nextElementSibling.innerHTML;
      document.getElementsByClassName('edit_contact_name')[0].value=name;
      document.getElementsByClassName('edit_contact_email')[0].value=email;
      var group=checked[1].parentNode.nextElementSibling.nextElementSibling.nextElementSibling
      if(group.innerHTML !="default"){
        var group_id=group.getAttribute('group_id')
        document.getElementsByClassName('edit_contact_group_name')[0].value=id;
      }
      $('#edit_contact').modal();
      return;
    }
    alert('每次编辑只能选择一条记录');
    return;
  }
  if(checked.length >2){
    alert('每次编辑只能选择一条记录');
  }
};

Der Code wird viel klarer, wenn die folgenden Bedingungen aufgeführt sind:

1.checked.length ==0

2.checked.length ==1

3.checked.length ==2

4.checked. Länge > 2

Als nächstes kapseln Sie den doppelten Code in eine Funktion (Entfernen Sie Duplikate), um den Code zu erhalten:

function get_edit_modal_content(node_num,checked){
    var email=checked[node_num].parentNode.nextElementSibling.nextElementSibling.innerHTML;
    var name=checked[node_num].parentNode.nextElementSibling.innerHTML;
        var contact_id=checked[node_num].parentNode.nextElementSibling.getAttribute('contact_id')
    var regular_name=/[\u4E00-\u9FA5\uF900-\uFA2D\w]*/;
    name=regular_name.exec(name)[0];
    document.getElementsByClassName('edit_contact_id')[0].value=contact_id;
    document.getElementsByClassName('edit_contact_name')[0].value=name;
    document.getElementsByClassName('edit_contact_email')[0].value=email;
    var group=checked[node_num].parentNode.nextElementSibling.nextElementSibling.nextElementSibling
    if(group.innerHTML !="default"){
     var group_id=group.getAttribute('group_id')
     document.getElementsByClassName('edit_contact_group_name')[0].value=group_id;
   }
 }
  document.getElementsByClassName('eButton')[0].onclick=function(){
    var checked=document.getElementsByClassName('checked');
    if(checked.length==0){
      alert('请选择要编辑的联系人!');
      return;
    }
    if(checked.length==1){
      get_edit_modal_content(0,checked);
      $('#edit_contact').modal();
      return;
    }
    if(checked.length==2){
      if(checked[0].childNodes[0].id=='check-all'){
        get_edit_modal_content(1,checked);
        $('#edit_contact').modal();
        return;
      }
      alert('每次编辑只能选择一条记录');
      return;
    }
    if(checked.length >2){
      alert('每次编辑只能选择一条记录');
      return;
    }
  };


Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn