await checkbox
win32s,
<!DOCTYPE html> <html> <head> <title>Untitled</title> <meta charset="utf-8"> <style type="text/css"> input[type="checkbox"] { width:19px; height:19px; } </style> </head> <body> <input type="checkbox" name="" disabled="disabled"> <input type="checkbox" name="" disabled="disabled"> <input type="checkbox" name="" disabled="disabled"> <input type="checkbox" name="" disabled="disabled"> <input type="checkbox" name="" disabled="disabled"> <script> async function mouseClick(el) { return new Promise(resolve => el.onclick = () => setTimeout(resolve, 5000)); } (async function main() { for(const el of document.querySelectorAll('[type="checkbox"]')) { el.removeAttribute('disabled'); await mouseClick(el); } })(); </script> </body> </html> |
Большое спасибо, именно то, что надо!
|
Есть еще вопрос - как правильно выполнить действия после того, как пользователь отметил флажки? Скажем, вывожу ему форму ввода. Число три тут для примера (три флажка), сугубо для теста.
var cnt = 0; async function mouseClick(el) { return new Promise(resolve => el.onclick = () => { //console.log(el); el.disabled = true; cnt++; if (cnt < 3) { setTimeout(resolve, 1000); } else { console.log("fin"); } } ); } (async function main() { for(const el of document.querySelectorAll('[type="checkbox"]')) { el.removeAttribute('disabled'); await mouseClick(el); } main().then(console.log("FIN")) ; })(); Какой из вариантов правильный , где в main или в обработке клика ? Никогда раньше не работал ни с промисами, ни с async await, поэтому не совсем понимаю эти механизмы, где там конец кода. |
win32s,
<!DOCTYPE html> <html> <head> <title>Untitled</title> <meta charset="utf-8"> <style type="text/css"> input[type="checkbox"] { width:19px; height:19px; } .fin { transform: scale(0); margin: 0 auto; text-align: center; font-size: 3em; } .fin.open{ transition: 1s; transform: scale(1); } </style> </head> <body> <input type="checkbox" name="" disabled="disabled"> <input type="checkbox" name="" disabled="disabled"> <input type="checkbox" name="" disabled="disabled"> <input type="checkbox" name="" disabled="disabled"> <input type="checkbox" name="" disabled="disabled"> <div class="fin">fin</div> <script> async function mouseClick(el, delay) { return new Promise(resolve => el.onclick = () => { el.setAttribute('disabled', 'disabled'); setTimeout(resolve, delay) }); } const checkboxs = document.querySelectorAll('[type="checkbox"]'), fin = document.querySelector('.fin'); let {length} = checkboxs; (async function main() { for(const el of document.querySelectorAll('[type="checkbox"]')) { el.removeAttribute('disabled'); let delay = --length ? 5000 : 0; await mouseClick(el, delay); } fin.classList.add('open'); })(); </script> </body> </html> |
Часовой пояс GMT +3, время: 09:49. |