Как я могу отключить кнопку после onclick, но внутри другой функции?

#javascript #button #onclick #disable

#javascript #кнопка #onclick #отключить

Вопрос:

У меня есть кнопки с той же функцией onclick. Я хочу, чтобы кнопки были отключены после одного щелчка. Функция onclick должна выполнять более одной функции, так как я могу это сделать.

  <input type="button" class="buttons" id="button2" value="2" 
    onclick="run()" />  
  

Ниже приведен код для одной из кнопок, внутри функции run запущена другая функция.

 function disablebutton(button){
    this.disabled = true;
}
  

Ответ №1:

Вам просто нужно вызвать функцию на разных кнопках.

         function disablebutton(buttonObject){
            buttonObject.disabled = true;
        }


        var button1 = document.getElementById('b1');
        var button2 = document.getElementById('b2');

        button1.onclick = function(){
          disablebutton(button1);
        }

         button2.onclick = function(){
          disablebutton(button2);
        }
  

или

     <input type="button" class="buttons" id="button1" value="1" 
    onclick="run(this)" />  
    <input type="button" class="buttons" id="button2" value="2" 
    onclick="run(this)" /> 


    function run(button){
        button.disabled = true;
    }
  

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

1. Если у вас есть кнопка on-click во встроенном html, то все, что вам нужно, это только функция JS, ваш html должен быть примерно таким <button onclick=»disablebutton(this)»></button>

2. как я могу вызывать функции с помощью onclick? я хочу, чтобы кнопка отключалась только после нажатия кнопки

3. Отредактированный пост — также удалите onclick из html, он вам не нужен в моем коде выше.

Ответ №2:

Вы должны выбрать все кнопки, а затем изменить атрибут disabled. Вы можете сделать это, добавив класс к кнопке, выбрав их в классе, а затем выполнив цикл, отключив их все следующим образом:

 var elems = document.getElementsByClassName("buttons");
for(var i = 0; i < elems.length; i  ) {
    elems[i].disabled = true;
}
  

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

1. это отключает все кнопки после нажатия одной

Ответ №3:

Вы можете вызвать disablebutton() внутреннюю run() функцию или добавить ее после run() функции в onClick() :

 <input type="button" class="buttons" id="button2" value="2" 
        onclick="run(); disablebutton(this)" />

// Or

<input type="button" class="buttons" id="button2" value="2" 
        onclick="run(this)" />

function run(thisButton) {
  console.log('run');
  disableButton(thisButton)
}
  

1-е решение:

 function run() {
  console.log('run');
}

function disablebutton(button){
    console.log(button);
    button.disabled = true;
}  
 <input type="button" class="buttons" id="button2" value="2" 
    onclick="run(); disablebutton(this)" />  

2-е решение:

 function run(thisButton) {
  console.log('run');
  disablebutton(thisButton)
}

function disablebutton(button){
    console.log(button);
    button.disabled = true;
}  
 <input type="button" class="buttons" id="button2" value="2" 
        onclick="run(this)" />  

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

1. Функция run здесь бессмысленна, она усложняет простой процесс. Если вы используете встроенный html, просто вызовите disablebutton во встроенном html.