代码你就明白了:
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(); } } } } };
哈哈,看到自己写的这些代码,突然感觉这个函数一定很厉害。整个函数被if..else..搞得乱七八糟的,开始思考为什么当时要用if..else
,其实当时只是考虑到这个逻辑中有大概三四种不同的条件,要执行三四种运算,而且每次只能执行一种情况(执行完就到函数结尾),这些就是程序的执行流程。有了这个流程,自己开始考虑怎么把代码改改,改的一目了然,改的易于维护。这个时候自己自然而言的想到了return这个关键字,使用”return“后就有了下面的代码:
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('每次编辑只能选择一条记录'); } };
下面这些条件罗列起来代码就清晰多了:
1.checked.length ==0
2.checked.length ==1
3.checked.length ==2
4.checked.length > 2
接下来把重复的代码封装到函数中(去除重复)得到代码:
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; } };
