Я хотел бы спросить, можно ли вызвать функцию внутри цикла с использованием Javascript.

Я хотел бы создать текстовое поле, которое увеличивает и уменьшает кнопку, не используя ввод HTML «число».

Есть ли более простой способ нормализовать функцию на 1 и использовать вместо этого цикл?

function increment() {
    document.getElementById("myNumber").stepUp(1);
}
function increment2() {
    document.getElementById("myNumber2").stepUp(1);
}
Number: <input type="number" id="myNumber">
<button onclick="increment()">+</button>

Number: <input type="number" id="myNumber2">
<button onclick="increment2()">+</button>
0
BattleGuard 7 Янв 2017 в 11:02

3 ответа

Лучший ответ

Как насчет передачи идентификатора в качестве параметра функции:

function increment(id) {
    document.getElementById(id).stepUp(1);
}

А потом:

Number: <input type="number" id="myNumber">
<button onclick="increment('myNumber')">+</button>

Number: <input type="number" id="myNumber2">
<button onclick="increment('myNumber2')">+</button>
3
Darin Dimitrov 7 Янв 2017 в 08:08

Другие ответы, безусловно, решают задачу, но ... настоятельно не рекомендуется использовать onclick и аналогичные атрибуты для обработки событий с помощью JavaScript (например, см. " Почему использование onClick () в HTML - это плохая практика? ").

Рекомендуемый способ - addEventListener('click', callback), потому что код более понятен и понятен.

См. https://jsfiddle.net/zrx2xqgg/ в качестве примера для конкретной задачи. Селектор ввода передается как атрибут кнопке.

0
Community 23 Май 2017 в 11:53

Вы можете передать id ввода в вызове функции:

function increment(elem) {
  document.getElementById(elem).stepUp(1);
}
Number:
<input type="number" id="myNumber">
<button onclick="increment('myNumber')">+</button>


Number:
<input type="number" id="myNumber2">
<button onclick="increment('myNumber2')">+</button>
2
John Bupit 7 Янв 2017 в 08:09