Javascript-форум (https://javascript.ru/forum/)
-   Элементы интерфейса (https://javascript.ru/forum/dom-window/)
-   -   Как объединить два условия? (https://javascript.ru/forum/dom-window/77591-kak-obedinit-dva-usloviya.html)

madeas 24.05.2019 13:32

Как объединить два условия?
 
Привет всем!

Собственно, вопрос в заголовке. Я немного в затупке)) Написал скрипт для двух кнопок, но не могу объединить выполнение обоих условий.

Код ниже:

function combo() {
  const a = $(".fn"),
    b = $("#w");

  if (
    a.click(function() {
      a.toggleClass("green active");
    })
  );

  if (
    b.click(function() {
      b.toggleClass("green active");
    })
  );

  $(window).keydown(function(evt) {
    if (evt.which == 87) {
      b.toggleClass("green active");
    }
  });
}
combo();


Подскажите, как объединить, чтобы при выполнении обоих условий срабатывало третье:
$('.key').toggleClass('green');


Предполагаю, что оба условия проще обернуть в две функции и потом другой выводить через if... = true, но нужны ваши мысли на этот счет.
Заранее спасибо.

рони 24.05.2019 13:46

madeas,
:-?

madeas 24.05.2019 14:14

рони, нет идей? (
или настолько просто, что лень писать?))

рони 24.05.2019 14:20

madeas,
я не осилил ваш код, не могу помочь, жду гуру-телепата.

Dilettante_Pro 24.05.2019 14:46

madeas,
А можно макетик html?
И что значит - выполнение обоих условий?
В каком состоянии кнопки a и b?

madeas 24.05.2019 14:49

По идее, должно быть что-то подобное:
function combo() {
  const 
    a = $(".fn"),
    b = $("#w"),
    k = $(".key");

  $(function afoo() {
    if (
      a.click(function() {
        a.toggleClass("green active");
      })
    );
  });

  $(function bfoo() {
    if (
      b.click(function() {
        b.toggleClass("green active");
      })
    );

    $(window).keydown(function(evt) {
      if (evt.which == 87) {
        b.toggleClass("green active");
      }
    });
  });
  
  // if((afoo === true) & (bfoo === true)) {
  //   k.toogleClass( 'green');
  // }
}
combo();


где,
// if((afoo === true) & (bfoo === true)) {
  //   k.toogleClass( 'green');
  // }

результат

рони 24.05.2019 14:50

madeas,
может опишите что хотите сделать словами?

madeas 24.05.2019 14:55

если сводить к результату, то нужно сочетанием: клика по кнопке А и нажатия клавиши Б добавить класс кнопке С

Dilettante_Pro 24.05.2019 15:08

Цитата:

Сообщение от madeas
клика по кнопке А

Клики по кнопке A бывают разные: они могут подключать или отключать классы green active

Совсем не понял это
Цитата:

Сообщение от madeas
нажатия клавиши Б

b = $("#w")

Или это не клавиша, а тоже кнопка?

madeas 24.05.2019 15:10

Dilettante_Pro,

a = $(".fn")
a.click(function() {
        a.toggleClass("green active");
})


b = $("#w");
$(window).keydown(function(evt) {
      if (evt.which == 87) {
        b.toggleClass("green active");
    }
});

это кнопки, но активируются 1 кликом мыши, 2 клавишей `W` с клавиатуры (код 87)

madeas 24.05.2019 15:21

Цитата:

Сообщение от Dilettante_Pro
А можно макетик html?
И что значит - выполнение обоих условий?
В каком состоянии кнопки a и b?

сорри, не заметил ваше сообщение.

https://codepen.io/andrejsharapov/pen/pmdNKW

к сожалению collab mode только для про (

функция в самом низу

рони 24.05.2019 15:26

madeas,
var a = $(".fn"),b = $("#w"), afoo, bfoo;
a.click(function() {
      afoo = a.toggleClass("green active").is(".green");
      fn()
})

;
$(window).keydown(function(evt) {
      if (evt.which == 87) {
       bfoo = b.toggleClass("green active").is(".green");
    }
      fn()
});
function fn()
{

if((afoo === true) && (bfoo === true)) {


  //   k.toogleClass( 'green');


   }

}

Dilettante_Pro 24.05.2019 15:32

<style>
.green { background-color:green; }
.active { border:1px solid red;}
</style>
<button class="fn" >A</button>
<button id="w">B</button>
<button class="key">C</button>
<script src="https://code.jquery.com/jquery-latest.min.js"></script>
<script>
var     a = $(".fn"),
          b = $("#w"),
          k = $(".key");
a.click(function() {
    a.toggleClass("green active");
    testStatus();
});
b.click(function() {
    b.toggleClass("green active");
    testStatus();
});
function testStatus() {
  if (a.hasClass('active') && b.hasClass('active')) {
     k.addClass('green');
  } else { k.removeClass('green'); }

}
</script>

madeas 24.05.2019 16:30

спасибо. немного подправил, сработало


Часовой пояс GMT +3, время: 00:34.