Как повторить нажатие кнопки 10 раз после нажатия

#javascript

#javascript

Вопрос:

Я пытаюсь повторить нажатие кнопки после того, как пользователь нажмет на кнопку. Я нашел JavaScript функцию, которая повторяет щелчок. Но мне нужно, чтобы щелчок остановился, скажем, 10 раз. Время должно зависеть от того, что пользователь вводит в форму (сколько). Я знаю, что прошу код… Но я не могу найти ничего хорошего в Интернете. Я надеюсь, что кто-нибудь поможет.

Чего я пытаюсь добиться, так это:

Пользователь заполняет, сколько раз он хочет нанять детектива. Скрипт будет повторять нажатие кнопки отправки столько раз.

 function myFunction() {
    setInterval(function() {
        document.getElementById("send").click();
    }, 10);
} 
 <tr>
    <td class="footer">Hire for (hours): </td>
    <td class="footer"><input type="number" value="1" onClick="this.select()" name="findtime" size="20"></td>
</tr>
<tr>
    <td class="footer" colspan="2">A detective charges 2500 per hour</td>
</tr>
<tr>
    <td class="footer">How many: </td>
    <td class="footer"><input type="number" value="1" onClick="this.select()" name="howmany" size="20"></td>
</tr>
<tr>
    <td class="footer" colspan="2">A detective charges 2500 per hour</td>
</tr>
<tr>
    <td class="footer"></td>
    <td class="footer"><input class="example_c" type="submit" id="send" name="send" onclick="myFunction()" value="Hire private detective"></td>
</tr> 

Комментарии:

1. for (let i = 0; i < 10; i ) document.getElementById("send").click();

2. Ваш дизайн и подход неверны. Если вы хотите рассчитать стоимость за количество часов, вам нужно сделать это с помощью математики, а не с помощью поддельных кликов. Если вы используете серверный язык, такой как PHP или что-то еще, то это просто умножение. Вы также можете вычислить его с помощью javascript таким же образом.

3. Я не пытаюсь вычислять. Я ищу способ, чтобы скрипт использовал переменную из ввода, сколько раз повторять кнопку отправки, нанять детектива столько раз после нажатия, а затем останавливаться, пока не нажмут снова.

Ответ №1:

 function myFunction() {
  const timesToClick = document.getElementById('howmany').value;
  for (let i = 0; i < timesToClick;   i) {
    document.getElementById('send').click();
    console.log('clicked');
  }  
}
 
 

Документ для click() функции здесь.

Документ для setInterval (в вашем коде) находится здесь.

В вашем коде setInterval() click() функция будет выполняться каждые 10 миллисекунд.

getElementByName заменено getElementById и .value добавлено.

Комментарии:

1. Спасибо! я пытаюсь использовать ваш код, но я получаю ошибку .. ncaught ReferenceError: моя функция не определена в HTMLInputElement.onclick Я действительно новичок в Javascript.. Теперь я попытался использовать ваш ответ следующим образом. <script language ="javascript" > function myFunction() { const timesToClick = document.getElementByName('howmany'); for (let i = 0; i < timesToClick; i) { document.getElementById('send').click(); } </script>

2. @newusertomysqli12 сообщение отредактировано, забыл добавить .value в конце, чтобы получить входное значение, обратите внимание на добавление идентификатора в ‘howmany’ и назовите его тем же. Проверьте клики в консоли, сработавшие в моем Chrome.

3. Вызов «document.getElementById (‘send’)» внутри цикла не очень эффективен.

4. Спасибо за обновление. Программа code показывает, что в коде есть ошибка, когда начинается строка «For». Есть ли, или так отсутствует?

5. Ок, это щелчок входа в консоль, умноженный на заданное значение. Это не значит повторять щелчок так много раз… Никаких ошибок в консоли не отображается.

Ответ №2:

Просто измените свой тег скрипта на

 <script language="javascript">
  function subFunction() {
    //do what you want to do in click here
    console.log("called");
  }

  function myFunction() {
    let num = document.getElementsByName("howmany")[0].value;
    while (num-- > 0) {
      subFunction();
    }
  }
</script>
 

Редактировать: я думаю, что запуск щелчка внутри обработчика щелчков — не очень хорошая идея.Вот почему я разделил логику.

Комментарии:

1. OP сказал, что они новички в SO, поэтому, пожалуйста, было бы здорово добавить комментарии о вашей логике.