别人变强靠天赋,而我,靠思维导图

简介: 说了你可能不信,我经常怀疑自己不!适!合!写!代!码!写代码的时候,我经常脑壳一晕,或去群里摸一下鱼,然后就突然搞不清上一段代码是写来干嘛的!!而且会有一点恍惚,刚才那段代码,真的是我写的?

说了你可能不信,我经常怀疑自己


不!适!合!写!代!码!


写代码的时候,我经常脑壳一晕,或去群里摸一下鱼,然后就突然搞不清上一段代码是写来干嘛的!!


而且会有一点恍惚,刚才那段代码,真的是我写的?


微信图片_20220511130737.jpg


直到,我发现了思维导图的妙用。


思维导图,本是用来记知识点的。


不过某一刻我头冒青烟,灵光一闪,一个念头扑面而来,挥之不去!


要不用它来记录代码逻辑试试?


为了验证自己的想法,我马不停蹄的找出自己之前实现过的分页逻辑。


看在按钮比较多的情分上,勉强算它有点复杂度。用来快速验证想法再合适不过。


分页的实现大概是用一些变量来控制当前状态,比如当前页,总页数,还有第几页的按钮等等,然后再写一个比如showPage()的方法来显示当前页的内容,通过变量的改变来控制showPage()的执行结果。


这里省去使用ajax获取后台数据的部分,我自己创建一个js文件,里面用JSON存了一点数据。一般来说使用ajax都是一页一页的获取数据,我这里直接将所有数据都显示出来。


先用css画一个大概样式图


微信图片_20220511130740.jpg


然后自行脑补一下想要实现的功能


微信图片_20220511130743.png


理清变量和功能方法


微信图片_20220511130747.jpg


以showBtn()为例,思考如何完成这个函数。


默认每一个button页有5个按钮,为了防止最后一页不够5个,先隐藏所有的按钮,然后通过循环将存在的按钮显示出来


微信图片_20220511130751.jpg


思维导图一出,逻辑果然顺滑如丝!


function showButton() {
  var $numb = $(".numb"),
    min = (btn_cur - 1) * 5 + 1,
    max = 0;
  if (btn_cur == btn_acount) {
    max = page_acount + 1;
  } else if (btn_cur < btn_acount) {
    max = btn_cur * 5 + 1;
  }
  $numb.hide();
  for (var i = min; i < max; i++) {
    !(function() {
      $numb.eq((i % 5) - 1).show();
      $numb.eq((i % 5) - 1).attr("data-list", i);
      $numb.eq((i % 5) - 1).html(i);
    })();
  }
}


对比一下优化之前的代码!


完!全!没!逻!辑!可!言!


反正不是我写的,贴出来也无所谓!


function showButton() {
  var $numb = $(".numb");
  if (btn_acount == 1) {
    $numb.hide();
    $(".more").hide();
    $(".last").hide();
    for (var i = 0; i < acountPage; i++) {
      $numb.eq(i).show();
      $numb.eq(i).attr("data-list", i);
    }
  }
  var min = (btn_cur - 1) * 5 + 1;
  var max = 0;
  if (btn_cur == btn_acount) {
    max = page_acount + 1;
  } else if (btn_cur < btn_acount) {
    max = btn_cur * 5 + 1;
  }
  $numb.hide();
  for (var i = min; i < max; i++) {
    $numb.eq((i % 5) - 1).show();
    $numb.eq((i % 5) - 1).attr("data-list", i);
    $numb.eq((i % 5) - 1).html(i);
  }
}


当函数都写好,变量都整明白了,就可以添加事件了。


先来一波思维逻辑头脑风暴


微信图片_20220511130754.jpg


完整的逻辑图非常复杂,可写代码毫无压力。


边摸鱼边写代码,惬意!


微信图片_20220511130758.jpg


$(".pos_page").on("click", function(e) {
  // e.preventDefault();
  var $target = $(e.target);
  var className = $target.attr("class").split(" ")[0];
  $target.on("selectstart", function() {
    return false;
  });
  switch (className) {
    case "prev_page":
      if (index != 0) {
        index -= 1;
        page_cur -= 1;
      } else if (index == 0) {
        if (btn_cur > 1) {
          index = 4;
          btn_cur -= 1;
          page_cur -= 1;
        } else if (btn_cur == 1) {
          return;
        }
      }
      showPage(page_cur, page_every);
      showButton();
      setFocus();
      break;
    case "next_page":
      if (btn_cur == btn_acount) {
        if (index == (page_acount % 5) - 1) {
          return;
        } else if (index < (page_acount % 5) - 1) {
          index++;
          page_cur++;
        }
      } else if (btn_cur < btn_acount) {
        if (index == 4) {
          index = 0;
          btn_cur += 1;
          page_cur += 1;
        } else if (index < 4) {
          index++;
          page_cur++;
        }
      }
      showPage(page_cur, page_every);
      showButton();
      setFocus();
      break;
    case "numb":
      page_cur = $target.attr("data-list");
      index = (page_cur % 5) - 1;
      console.log(page_cur);
      showPage(page_cur, page_every);
      showButton();
      setFocus();
      break;
    case "more":
      if (btn_cur < btn_acount) {
        btn_cur += 1;
        index = 0;
        showButton();
        setFocus();
        page_cur = $(".numb")
          .eq(0)
          .html();
        showPage(page_cur, page_every);
      }
      break;
    case "last":
      if (btn_cur != btn_acount) {
        btn_cur = btn_acount;
        index = 0;
        page_cur = (btn_cur - 1) * 5 + 1;
        showPage(page_cur, page_every);
        showButton();
        setFocus();
      }
    default:
      break;
  }
});


通过类名来区分目标DOM,通过自定义data-list属性来标识当前页


我原本很菜的!


后来用了思维导图!


可以徒手写分页了!

相关文章
|
3月前
|
并行计算 算法 数据处理
编程之道:从代码中领悟技术与生活的哲理
【8月更文挑战第28天】在数字世界的迷宫中,每一行代码都像是宇宙中的一个星系,既独立又相互联系。本文将通过一段简单的Python代码示例,探讨如何从编程实践中汲取生活智慧。我们将看到,代码不仅仅是冷冰冰的指令序列,它也能反映出人类思维的深度和广度。正如甘地所言:“你必须成为你希望在世界上看到的改变。”在编程的世界里,我们同样可以创造并见证这种改变。
43 3
|
26天前
|
程序员
代码与生活:技术感悟中的哲理
【10月更文挑战第20天】 在编程的世界里,我们不仅仅是在编写代码,更是在塑造一种生活方式。本文将探讨如何将编程思维应用到日常生活中,以及这种思维方式如何帮助我们更好地理解世界和自己。通过具体的例子和深入的分析,我们将看到,编程不仅仅是一种技能,更是一种生活哲学。
33 0
|
2月前
|
JavaScript 前端开发 Java
技术探索之旅:从迷茫到顿悟
本文记录了作者在技术领域的探索历程,从初入行的迷茫、尝试新领域的勇气,到不断学习和提升后的顿悟。通过个人经历,展现了技术成长的曲折与收获。
|
2月前
|
前端开发 JavaScript 算法
编程之旅:从迷茫到精通的心路历程
【9月更文挑战第20天】在编程的世界里,每个人都是一名旅者。起初,面对复杂的代码和逻辑,我们如同初入森林的探险者,既充满好奇又感到迷茫。然而,正如古人云:“千里之行,始于足下。”通过不断学习和实践,我们逐渐找到了属于自己的路径。本文将分享一位程序员的成长故事,从大学毕业时的迷茫,到大胆尝试新领域,再到不断学习和提升,最终找到人生方向的过程。让我们一起跟随他的脚步,探索编程之旅的奥秘与乐趣。
|
2月前
|
程序员
从代码中感悟生活的哲理
【9月更文挑战第12天】本文以编程为引子,探讨了技术背后的哲学思考。文章通过深入浅出的方式,结合生活中的小故事和简单的代码示例,引导读者理解在看似冰冷的代码背后所蕴含的热情与智慧。文章旨在启发读者,无论面对何种挑战,都应保持初心,勇于探索,不断学习,最终找到属于自己的人生方向。
|
5月前
|
设计模式 算法 Java
老程序员分享:OOAD理论知识小结
老程序员分享:OOAD理论知识小结
28 0
|
算法 数据可视化 人工智能
关于写好文章的3个心法和5点技巧
技术类文章最需要的是扎实的经验累积、深度思考和精益求精的精神,这些技巧,希望能够锦上添花。
关于写好文章的3个心法和5点技巧
|
设计模式 IDE Java
奉劝那些想把编程学好的学弟学妹们!呕心沥血,袒露心声,掏心掏肺
奉劝那些想把编程学好的学弟学妹们!呕心沥血,袒露心声,掏心掏肺
143 0
|
人工智能 算法 JavaScript
零基础学计算机图形学太难?或许你缺的只是一本好书
对先修知识没有特别多的要求,代码和文本都很详细
810 0