Как заставить кнопку снова запускать функцию после того, как окно возьмет на себя управление ею

  • Автор темы Dispaas
  • Обновлено
  • 13, May 2024
  • #1
Привет, ребята,

Я сделал простой переключатель на JavaScript, но меня поразило, как заставить кнопку запускать функцию каждый раз, когда вы нажимаете на нее.

Я не знаю, как это объяснить.

Но взгляните на код и скажите, как добиться желаемого результата.

(«Если вам лень писать с нуля, то код вполне работоспособен»)
 
<!DOCTYPE html>
<html><head>
 <style>
 div { background: red; display: none; padding: 20px 10px; }
 </style>
</head><body>
 <input type=button id=button value="Click Me" /><br/><br/>
 <div>
 <input type=text placeholder="Введите сюда..." />
 </div>
 <script>
 var d = document.getElementsByTagName('div')
 , b = document.getElementById('button');

 b.addEventListener('click', () => {
 (d[0].style.display !== 'block') ? d[0].style.display = 'block' : d[0].style.display = 'none';
 });
 d[0].addEventListener('mouseup', (e) => {
 e.stopPropagation();
 });
 window.addEventListener('mouseup', () => {
 d[0].style.display = 'none';
 });
 </script>
</body></html>
Код (разметка): Спасибо,

Dispaas


Рег
11 Sep, 2012

Тем
80

Постов
206

Баллов
636
  • 05, Jun 2024
  • #2
Не уверен, чего вы хотите достичь, но вы можете просто отключить кнопку, чтобы она не сработала; с b.disabled = true; и b.disabled = ложь; чтобы включить его снова.

Я предполагаю, что вы хотите:

 <!DOCTYPE html>
<html><head>
 <style>
 div { background: red; display: none; padding: 20px 10px; }
 </style>
</head><body>
 <input type=button id=button value="Click Me" /><br/><br/>
 <div>
 <input type=text placeholder="Введите сюда..." />
 </div>
 <script>
 var d = document.getElementsByTagName('div')
 , b = document.getElementById('button');

 b.addEventListener('click', () => {
 (d[0].style.display !== 'block') ? d[0].style.display = 'block' : d[0].style.display = 'none';
 b.disabled = true;
 });
 d[0].addEventListener('mouseup', (e) => {
 e.stopPropagation();
 });
 window.addEventListener('mouseup', () => {
 d[0].style.display = 'none';
 b.disabled = false;
 });
 </script>
</body></html>


HTML:
 

2dccksmb


Рег
29 Apr, 2014

Тем
68

Постов
171

Баллов
531
  • 10, Jun 2024
  • #4
Спасибо, Не совсем. Я имею в виду, что хочу сделать то же самое, что в меню Твиттера. Посмотрите и попробуйте. Многие веб-сайты имеют эту функцию. Если я не могу сделать это сам, мне придется одолжить у кого-нибудь. Я давно не использую jQuery и почти все о нем забыл.
 

Sweabbent


Рег
05 Apr, 2012

Тем
82

Постов
183

Баллов
603
  • 12, Jun 2024
  • #5
Привет.

Он (пост №1) конечно переключается, но только клавишей или на кнопке.

Не щелчком мыши, из-за последней части:

 () => {}


Код (JavaScript): Хм, странный кодировщик.

Я не знал, что мы можем заменить

 function(){}


Код (JavaScript): со следующим синтаксисом:

 window.addEventListener('mouseup', () => { d[0].style.display = 'none'; });


Код (JavaScript):
 

Hermesconrad


Рег
21 Jan, 2014

Тем
63

Постов
218

Баллов
553
Тем
403,760
Комментарии
400,028
Опыт
2,418,908

Интересно