javascript—管理元素样式的更改有没有更简单的方法?

qyswt5oh  于 2021-09-13  发布在  Java
关注(0)|答案(0)|浏览(190)

我知道我在用mjs代码重复我自己,它并不枯燥,尽管我不知道如何以更简洁的方式编写它。
为了更改单击事件中元素的样式,我遵循创建包含更改的类的路径,然后删除默认类并为被单击的元素添加新类,然后删除新类并在用户单击该元素时再次添加默认类。
每件事都能100%工作,尽管我很确定有一种更简单的方法可以通过使用某种循环来实现这一点,而且我也不确定在更改之前是否需要所有用于保存对象元素值的常量-也许有一种更简单的方法来访问这些元素的dom(第3.2步)。
我只学了一个月的网络开发,所以我不知道我不知道什么。
如果你有更简单的方法,你能看一下并告诉我吗?
我有6个div,它们共享列、颜色和内容的类。它们都如下所示:

  1. <div class="portfolio_columns">
  2. <div class="colorful_box box1"></div>
  3. <div class='portfolio_piece piece1'>
  4. </div>
  5. </div>
  6. <div class="portfolio_columns">
  7. <div class="colorful_box box2"></div>
  8. <div class='portfolio_piece piece2'>
  9. </div>
  10. </div>
  11. <div class="portfolio_columns">
  12. <div class="colorful_box box3"></div>
  13. <div class='portfolio_piece piece3'>
  14. </div>
  15. </div>
  16. <div class="portfolio_columns">
  17. <div class="colorful_box box4"></div>
  18. <div class='portfolio_piece piece4'>
  19. </div>
  20. </div>
  21. <div class="portfolio_columns">
  22. <div class="colorful_box box5"></div>
  23. <div class='portfolio_piece piece5'>
  24. </div>
  25. </div>
  26. <div class="portfolio_columns">
  27. <div class="colorful_box box6"></div>
  28. <div class='portfolio_piece piece6'>
  29. </div>
  30. </div>

然后我创建javascript,这样我就可以监听点击。
我遵循以下步骤:
步骤1.我将id添加到html元素中:

  1. <div id="pc1" class="portfolio_columns">
  2. <div id="box_1" class="colorful_box box1"></div>
  3. <div id="piece_1" class='portfolio_piece piece1'>
  4. </div>
  5. </div>
  6. <div id="pc2" class="portfolio_columns">
  7. <div id="box_2" class="colorful_box box1"></div>
  8. <div id="piece_2" class='portfolio_piece piece1'>
  9. </div>
  10. </div>
  11. <div id="pc3" class="portfolio_columns">
  12. <div id="box_3" class="colorful_box box1"></div>
  13. <div id="piece_3" class='portfolio_piece piece1'>
  14. </div>
  15. </div>
  16. <div id="pc4" class="portfolio_columns">
  17. <div id="box_4" class="colorful_box box1"></div>
  18. <div id="piece_4" class='portfolio_piece piece1'>
  19. </div>
  20. </div>
  21. <div id="pc5" class="portfolio_columns">
  22. <div id="box_5" class="colorful_box box1"></div>
  23. <div id="piece_5" class='portfolio_piece piece1'>
  24. </div>
  25. </div>
  26. <div id="pc6" class="portfolio_columns">
  27. <div id="box_6" class="colorful_box box1"></div>
  28. <div id="piece_6" class='portfolio_piece piece1'>
  29. </div>
  30. </div>

步骤2.我为我的div类和css中的新类创建了一些默认样式,其中包含鼠标事件的样式更改:

  1. .portfolio_columns {
  2. }
  3. .colorful_box {
  4. }
  5. .portfolio_piece {
  6. }
  7. .pcc {
  8. }
  9. .ppc {
  10. }
  11. .cbc {
  12. }

步骤3.1。在js中,我创建了一个常量,在鼠标事件后对元素对象进行更改之前保存元素对象:

  1. const pcc1 = document.getElementById('pc1'),
  2. pcc2 = document.getElementById('pc2'),
  3. pcc3 = document.getElementById('pc3'),
  4. pcc4 = document.getElementById('pc4'),
  5. pcc5 = document.getElementById('pc5'),
  6. pcc6 = document.getElementById('pc6'),
  7. cbc1 = document.getElementById('box_1'),
  8. cbc2 = document.getElementById('box_2'),
  9. cbc3 = document.getElementById('box_3'),
  10. cbc4 = document.getElementById('box_4'),
  11. cbc5 = document.getElementById('box_5'),
  12. cbc6 = document.getElementById('box_6'),
  13. ppc1 = document.getElementById('piece_1'),
  14. ppc2 = document.getElementById('piece_2'),
  15. ppc3 = document.getElementById('piece_3'),
  16. ppc4 = document.getElementById('piece_4'),
  17. ppc5 = document.getElementById('piece_5'),
  18. ppc6 = document.getElementById('piece_6');

步骤3.2。我创建了一个名为cnt的全局变量,并为单击文档添加了一个eventlistener。在eventlistener中,我使用if语句来标识单击的内容,如果它是我正在侦听的内容,那么我会相应地添加新类并删除元素对象的默认类。一旦用户单击所选元素,我将删除新类并恢复默认类:

  1. let cnt = 0;
  2. document.addEventListener('click', function(e) {
  3. if (e.target.classList.contains('box1')) {
  4. cnt = 1;
  5. pcc1.classList.remove('portfolio_columns');
  6. pcc1.classList.add('pcc');
  7. cbc1.classList.remove('colorful_box');
  8. cbc1.classList.add('cbc');
  9. ppc1.classList.remove('portfolio_piece');
  10. ppc1.classList.add('ppc');
  11. }
  12. else
  13. if (e.target.classList.contains('box2')) {
  14. cnt = 2;
  15. pcc2.classList.remove('portfolio_columns');
  16. pcc2.classList.add('pcc');
  17. cbc2.classList.remove('colorful_box');
  18. cbc2.classList.add('cbc');
  19. ppc2.classList.remove('portfolio_piece');
  20. ppc2.classList.add('ppc');
  21. }
  22. else
  23. if (e.target.classList.contains('box3')) {
  24. cnt = 3;
  25. pcc3.classList.remove('portfolio_columns');
  26. pcc3.classList.add('pcc');
  27. cbc3.classList.remove('colorful_box');
  28. cbc3.classList.add('cbc');
  29. ppc3.classList.remove('portfolio_piece');
  30. ppc3.classList.add('ppc');
  31. }
  32. else
  33. if (e.target.classList.contains('box4')) {
  34. cnt = 4;
  35. pcc4.classList.remove('portfolio_columns');
  36. pcc4.classList.add('pcc');
  37. cbc4.classList.remove('colorful_box');
  38. cbc4.classList.add('cbc');
  39. ppc4.classList.remove('portfolio_piece');
  40. ppc4.classList.add('ppc');
  41. }
  42. else
  43. if (e.target.classList.contains('box5')) {
  44. cnt = 5;
  45. pcc5.classList.remove('portfolio_columns');
  46. pcc5.classList.add('pcc');
  47. cbc5.classList.remove('colorful_box');
  48. cbc5.classList.add('cbc');
  49. ppc5.classList.remove('portfolio_piece');
  50. ppc5.classList.add('ppc');
  51. }
  52. else
  53. if (e.target.classList.contains('box6')) {
  54. cnt = 6;
  55. pcc6.classList.remove('portfolio_columns');
  56. pcc6.classList.add('pcc');
  57. cbc6.classList.remove('colorful_box');
  58. cbc6.classList.add('cbc');
  59. ppc6.classList.remove('portfolio_piece');
  60. ppc6.classList.add('ppc');
  61. }
  62. else
  63. if (cnt > 0) {
  64. switch (cnt) {
  65. case 1: {
  66. pcc1.classList.remove('pcc');
  67. cbc1.classList.remove('cbc');
  68. ppc1.classList.remove('ppc');
  69. pcc1.classList.add('portfolio_columns');
  70. cbc1.classList.add('colorful_box');
  71. ppc1.classList.add('portfolio_piece');
  72. }
  73. break;
  74. case 2: {
  75. pcc2.classList.remove('pcc');
  76. cbc2.classList.remove('cbc');
  77. ppc2.classList.remove('ppc');
  78. pcc2.classList.add('portfolio_columns');
  79. cbc2.classList.add('colorful_box');
  80. ppc2.classList.add('portfolio_piece');
  81. }
  82. break;
  83. case 3: {
  84. pcc3.classList.remove('pcc');
  85. cbc3.classList.remove('cbc');
  86. ppc3.classList.remove('ppc');
  87. pcc3.classList.add('portfolio_columns');
  88. cbc3.classList.add('colorful_box');
  89. ppc3.classList.add('portfolio_piece');
  90. }
  91. break;
  92. case 4: {
  93. pcc4.classList.remove('pcc');
  94. cbc4.classList.remove('cbc');
  95. ppc4.classList.remove('ppc');
  96. pcc4.classList.add('portfolio_columns');
  97. cbc4.classList.add('colorful_box');
  98. ppc4.classList.add('portfolio_piece');
  99. }
  100. break;
  101. case 5: {
  102. pcc5.classList.remove('pcc');
  103. cbc5.classList.remove('cbc');
  104. ppc5.classList.remove('ppc');
  105. pcc5.classList.add('portfolio_columns');
  106. cbc5.classList.add('colorful_box');
  107. ppc5.classList.add('portfolio_piece');
  108. }
  109. case 6: {
  110. pcc6.classList.remove('pcc');
  111. cbc6.classList.remove('cbc');
  112. ppc6.classList.remove('ppc');
  113. pcc6.classList.add('portfolio_columns');
  114. cbc6.classList.add('colorful_box');
  115. ppc6.classList.add('portfolio_piece');
  116. }
  117. }
  118. }
  119. });

暂无答案!

目前还没有任何答案,快来回答吧!

相关问题