Остановить автоматическое срабатывание части функции Javascript

Можно ли остановить скрипт и дождаться ввода пользователя, прежде чем продолжить? Вот часть, которую мне нужно остановить:

  var nName = document.getElementById("b1");
  nName.innerHTML = "Continue";
  document.getElementById("b1").onclick = newName();

Итак, "b1" - это кнопка HTML, я хочу остановить ее после

nName.innerHTML = "Continue";

и дождитесь, пока пользователь нажмет кнопку перед стрельбой

document.getElementById("b1").onclick = newName();

используя return, полностью остановите скрипт. Есть ли другой способ сделать это?

Неа. JS - это не CPP, все дело в асинхронных материалах и обратных вызовах. Я бы просто добавил return вместо последнего оператора. И поместите последнюю строку в обратный вызов нажатия кнопки.

Hirasawa Yui 19.07.2018 17:41

Чтобы прослушать событие щелчка пользователя, вам нужен document.getElementById("b1").onclick, но нужно ли создавать его после щелчка пользователя? У меня разбился мозг.

Lasitha 19.07.2018 18:09
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
В настоящее время производительность загрузки веб-сайта имеет решающее значение не только для удобства пользователей, но и для ранжирования в...
Безумие обратных вызовов в javascript [JS]
Безумие обратных вызовов в javascript [JS]
Здравствуйте! Юный падаван 🚀. Присоединяйся ко мне, чтобы разобраться в одной из самых запутанных концепций, когда вы начинаете изучать мир...
Система управления парковками с использованием HTML, CSS и JavaScript
Система управления парковками с использованием HTML, CSS и JavaScript
Веб-сайт по управлению парковками был создан с использованием HTML, CSS и JavaScript. Это простой сайт, ничего вычурного. Основная цель -...
JavaScript Вопросы с множественным выбором и ответы
JavaScript Вопросы с множественным выбором и ответы
Если вы ищете платформу, которая предоставляет вам бесплатный тест JavaScript MCQ (Multiple Choice Questions With Answers) для оценки ваших знаний,...
1
2
79
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Останавливать скрипт не нужно. Ты не можешь.

Передайте ссылки на функции (без скобок в именах функций) следующим образом:

document.getElementById("b1").onclick = newName;

Пример:

function firstClick(){
  document.getElementById('b1').innerHTML = "Continue"
  // override the first click listener. "firstClick" will no longer be called.
  document.getElementById('b1').onclick = newName;
}
function newName(){
  document.getElementById('b1').innerHTML = "Good Job!"
}

// listen for first click
document.getElementById('b1').onclick = firstClick
<button id=b1>Click Me!</button>

Для того, чтобы полностью понять, что происходит, я должен направить вас к Google и документации, и, прежде всего, к экспериментам.

Но если коротко, то не в техническом плане.

onclick сам по себе ничего не делает. Нужно сказать, что он делает. Браузер сделает то, что вы ему скажете. Ему может быть назначена только 1 функция. Итак, если вы выполните onclick=a; onclick=b; onclick=c, будет вызываться только c.

Если вы назначаете имя функции с помощью парантезы onclick = newName(), то вы выполняете функцию newName () и назначаете ее возврат методу onclick. Так что в данном случае - ничего. Если вы сделаете onclick=newName, Borwser автоматически добавит парантез.


Вы даже можете создать функцию «сортировки», чтобы решить, каковы следующие шаги:

function triage(){
  var el = document.getElementById('b1');
  if (el.innerHTML == "Continue"){
    el.innerHTML = 'Good Job!';
  }else{
    el.innerHTML = 'Continue';
  }
}

// listen for first click
document.getElementById('b1').onclick = triage
<button id=b1>Click Me!</button>

Думаю, я пропустил там объяснение. Я хочу сделать следующее: когда я нажимаю кнопку в первый раз, он запускает первый скрипт, переименовывает кнопку и останавливается на этом, подождите, пока пользователь снова нажмет кнопку, и выполните скрипт newName ().

Nicholas 19.07.2018 18:33

Это то, что я искал, большое спасибо! Но для ясности не могли бы вы объяснить логику кода? Я все еще изучаю JS, и мне есть чему поучиться.

Nicholas 19.07.2018 18:43

Другие вопросы по теме