Advertisement
Guest User

Untitled

a guest
Jun 26th, 2019
87
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 3.27 KB | None | 0 0
  1. <input class="add-prod" value="699"> <!--Valores a sumar-->
  2. <input class="add-prod" value="899"> <!--Valores a sumar-->
  3. <input class="add-prod" value="999"> <!--Valores a sumar-->
  4.  
  5. <div class="cont-num" id="clicks">0</div> <!--Contador de clicks-->
  6. <div class="cont-num" id="clicksdos">0</div> <!--Contador de clicks-->
  7.  
  8. <!--Aquí se suman los inputs-->
  9.  
  10. <div id="cont-resultado">
  11. <input name="total" id="total" type="num" readonly="readonly">
  12. </div>
  13.  
  14. <!--El siguiente div es el botón que realiza las funciones-->
  15.  
  16. <div class="comp-clone" id="comp-p1" data-clone="cont-p1">Comprar</div>
  17.  
  18. let clicks = 0;
  19. let clicksdos = 0;
  20.  
  21. const safeInt = (key) => {
  22. let value = parseInt(getValue(key));
  23. return (isNaN(value) || value < 0) ? 0 : value;
  24. }
  25.  
  26. // This loads our clicks from the LocalStorage
  27. const loadClicks = () => {
  28. clicks = safeInt('clicks');
  29. clicksdos = safeInt('clicksdos');
  30. }
  31.  
  32. const loadHTML = () => {
  33. return getValue('html', '');
  34. }
  35.  
  36. const loadFromStorage = () => {
  37. let html = loadHTML();
  38. if(html !== '') {
  39. loadClicks();
  40. }
  41. displayClicks();
  42. document.querySelector(".contenido").innerHTML = html;
  43. }
  44.  
  45. // Display the clicks on the screen
  46. const displayClicks = () => {
  47. clicks = (clicks === NaN) ? 0 : clicks;
  48. clicksdos = (clicksdos === NaN) ? 0 : clicksdos;
  49. document.querySelector('#clicks').innerHTML = clicks;
  50. document.querySelector('#clicksdos').innerHTML = clicksdos;
  51. // Hide / Show Result
  52. let display = (clicks > 0) ? 'block' : 'none';
  53. document.querySelector(".contenido").style.display = "display";
  54. }
  55.  
  56. const adjustClicks = (value) => {
  57. clicks +=value;
  58. clicksdos +=value;
  59. storeValue('clicks', clicks);
  60. storeValue('clicksdos', clicksdos);
  61. displayClicks();
  62. }
  63.  
  64. const addClick = () => adjustClicks(1);
  65. const removeClick = () => adjustClicks(-1);
  66.  
  67. // Manage localStorage
  68. const storeValue = (key, value) => (localStorage) ? localStorage.setItem(key, value) : '';
  69. const getValue = (key, defaultValue) => (localStorage) ? localStorage.getItem(key) : defaultValue;
  70. const storeHTML = () => storeValue("html",document.getElementsByClassName("contenido")[0].innerHTML);
  71.  
  72. // Add a node to the Derecha
  73. const addToDerecha = (nodeId) => {
  74. let node = document.querySelector(`#${nodeId}`);
  75. document.querySelector('.contenido').appendChild(node.cloneNode(true));
  76. storeHTML();
  77. displaySuma();
  78. };
  79.  
  80. // Monitor ALL click events
  81. document.addEventListener('click', (event) => {
  82. let target = event.target;
  83.  
  84. // Add
  85. if(target.matches('.comp-clone')) {
  86. addClick();
  87. addToDerecha(event.target.dataset.clone);
  88. }
  89.  
  90. // Remove
  91. if(target.matches('.bbp')) {
  92. removeClick();
  93. getParent('.contenido', target).removeChild(target.parentNode);
  94. storeHTML();
  95. displaySuma();
  96. }
  97. });
  98.  
  99. // This is just a helper function.
  100. const getParent = (match, node) => (node.matches(match)) ? node : getParent(match, node.parentNode);
  101.  
  102. // New Script for sum inputs
  103. const displaySuma = () => document.getElementById("total").value = suma();
  104.  
  105. const suma = function () {
  106. return Array.from(document.querySelectorAll(".contenido div .add-prod"))
  107. .reduce((a,v) => a + parseFloat(v.value), 0);
  108. }
  109.  
  110. // Code to run when the document loads.
  111. document.addEventListener('DOMContentLoaded', () => {
  112. if(localStorage) {
  113. loadFromStorage();
  114. }
  115. displaySuma();
  116. });
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement