#javascript #html
Вопрос:
Я создал простую систему монет с помощью JavaScript. И чтобы сделать обновления, я сделал кнопку, которая включается, когда ей больше 10. Чтобы сделать это навсегда, я запускаю эту функцию каждую миллисекунду с помощью этого:
window.setInterval(function(){ // My code is here }, 1);
В любом случае, есть ли более чистый способ запустить эту систему без запуска функции каждую миллисекунду? Похоже, это не чистый код
Вот код, который я сделал для системы монет:
var numberCounter = 0; var number = document.getElementById("number"); function plusOne() { numberCounter ; number.innerHTML = numberCounter; } function minusOne() { numberCounter--; number.innerHTML = numberCounter; } /* Disable Buttons when below 10 */ window.setInterval(function(){ if(number.innerHTML lt;=9){ document.getElementById("enableMe").disabled = true; } else { document.getElementById("enableMe").disabled = false; } }, 1);
lt;button onclick="plusOne();"gt; 1lt;/buttongt; lt;button onclick="minusOne();"gt;-1lt;/buttongt; lt;p id="number"gt;0lt;/pgt; lt;button id="enableMe"gt;Enabled when 10 or overlt;/buttongt;
Заранее спасибо!
Комментарии:
1. Да, просто сделайте обновление, когда внесете изменения.
2. Просто измените состояние по щелчку мыши?
3. Кроме того, вы кэшируете
number
, что является хорошей идеей, но поскольку вы проходите DOM тысячу раз в секунду, чтобы найти кнопку, также было бы неплохо кэшироватьenableMe
4. @Кит, и как я могу это сделать?
Ответ №1:
Просто сделайте функцию обновления по щелчку мыши. Нет необходимости непрерывно запускать функцию тысячу раз в секунду. Также начните с отключенной кнопки (так как счетчик начинается с 0).
var numberCounter = 0; var number = document.getElementById("number"); function plusOne() { numberCounter ; number.innerHTML = numberCounter; updateButton(); } function minusOne() { numberCounter--; number.innerHTML = numberCounter; updateButton(); } function updateButton() { enableMe.disabled = ( number.innerHTML lt; 10) }
lt;button onclick="plusOne();"gt; 1lt;/buttongt; lt;button onclick="minusOne();"gt;-1lt;/buttongt; lt;p id="number"gt;0lt;/pgt; lt;button id="enableMe" disabledgt;Enabled when 10 or overlt;/buttongt;
На самом деле, немного оптимизировав, он может быть даже однострочным!
const change = amount =gt; enableMe.disabled = (number.innerHTML = number.innerHTML amount) lt; 10;
lt;button onclick="change(1)"gt; 1lt;/buttongt; lt;button onclick="change(-1)"gt;-1lt;/buttongt; lt;p id="number"gt;0lt;/pgt; lt;button id="enableMe" disabledgt;Enabled when 10 or overlt;/buttongt;
Комментарии:
1. Привет, Джереми, большое тебе спасибо, это идеально 🙂
2. Не беспокойтесь! Я даже нашел способ сократить свои три строки кода до одной 🙂
3. Привет, Джереми, извините за беспокойство, но как я могу добавить кнопку умножения? Мне жаль, что я новичок в JavaScript
4. Ну что ж, попробуй. Попробуйте, и если вы застряли, Stackoverflow здесь, чтобы помочь. Однако мы не должны писать ваш код или разрабатывать ваше приложение для вас. Вы должны что-то попробовать, показать свою попытку (как вы очень хорошо сделали со своим первоначальным вопросом выше). Если вы застряли с умножением, вам придется создать новый вопрос. Удачи 🙂
5. Хорошо, спасибо, извините
Ответ №2:
1) Просто создайте функцию enableButton
, как показано ниже, и вызовите ее после нажатия обеих 1
-1
кнопок и
function enableButton() { if (number.innerHTML lt;= 9) { document.getElementById("enableMe").disabled = true; } else { document.getElementById("enableMe").disabled = false; } };
или
function enableButton() { document.getElementById("enableMe").disabled = number.innerHTML lt;= 9; };
2) Вы также должны обработать дело в первый раз, прежде чем нажимать какой-либо бот, затем вы просто вызываете enableButton
функцию.
var numberCounter = 0; var number = document.getElementById("number"); function plusOne() { numberCounter ; number.innerHTML = numberCounter; enableButton() } function minusOne() { numberCounter--; number.innerHTML = numberCounter; enableButton() } enableButton(); function enableButton() { if (number.innerHTML lt;= 9) { document.getElementById("enableMe").disabled = true; } else { document.getElementById("enableMe").disabled = false; } };
lt;button onclick="plusOne();"gt; 1lt;/buttongt; lt;button onclick="minusOne();"gt;-1lt;/buttongt; lt;p id="number"gt;0lt;/pgt; lt;button id="enableMe"gt;Enabled when 10 or overlt;/buttongt;
Комментарии:
1. Большое вам спасибо, это хорошее решение 🙂