#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, поэтому, пожалуйста, было бы здорово добавить комментарии о вашей логике.