Не прячьте переключенный div

Используйте BlockingCollection<Action> для создания шаблона производителя / потребителя с одним потребителем (только одна вещь работает в то время, как вы хотите) и один или несколько производителей.

Сначала определите общую очередь:

BlockingCollection<Action> queue = new BlockingCollection<Action>();

В вашем пользователе Thread или Task вы берете из него:

//This will block until there's an item available
Action itemToRun = queue.Take()

Затем из любого количества продюсеров на другие потоки просто добавьте в очередь:

queue.Add(() => LocateAddress(context.Request.UserHostAddress));
-1
задан Steven Heller 4 March 2019 в 22:44
поделиться

4 ответа

Вам, вероятно, тоже не нужно зацикливаться. Вот простой способ переключения:

function toggleDiv(divId) {
  const div = document.getElementById(divId);
  const visible = div.style.display === "block";
  div.style.display = visible ? "none" : "block";
}
  
<table style="margin-left: auto; margin-right: auto;" border="0" cellpadding="10">
  <tbody>
    <tr>
      <td><button onclick="toggleDiv('Div1');">Div1</button></td>
      <td><button onclick="toggleDiv('Div2');">Div2</button></td>
      <td><button onclick="toggleDiv('Div3');">Div3</button></td>
    </tr>
  </tbody>
</table>

<table>
<div id="Div1">
    Div1 Content
    </div>
    <div id="Div2" style="display: none;">
    Div2 Content
    </div>
    <div id="Div3" style="display: none;">
    Div3 Content
    </div>
</table>

0
ответ дан EJ Morgan 4 March 2019 в 22:44
поделиться

Привет вместо того, чтобы установить его в ноль, если равно, просто вернуть его сразу

0
ответ дан RizkiDPrast 4 March 2019 в 22:44
поделиться

Вот другой подход, если вам интересно. Использует событие и атрибут data-for.

// Simple hide all function, using a class identifier to get all Divs to hide.
const hideAll = () => document.querySelectorAll('.content').forEach(e => e.style.display = 'none');

// Use event delegation, then if we add or remove buttons it still works
document.addEventListener('click', (e) => {
  // if one of our buttons was clicked, do something.
  if(e.target.matches('.divButton')) {
    // Hide all first.
    hideAll();
    // Show the div, identified using the data-for attribute.
    document.querySelector(`#${e.target.dataset.for}`).style.display = 'block';
  }
});
<table style="margin-left: auto; margin-right: auto;" border="0" cellpadding="10">
  <tbody>
    <tr>
      <td><button class="divButton" data-for="Div1">Div1</button></td>
      <td><button class="divButton" data-for="Div2">Div2</button></td>
      <td><button class="divButton" data-for="Div3">Div3</button></td>
    </tr>
  </tbody>
</table>

<table>
<div id="Div1" class="content">
    Div1 Content
    </div>
    <div id="Div2" class="content" style="display: none;">
    Div2 Content
    </div>
    <div id="Div3" class="content" style="display: none;">
    Div3 Content
    </div>
</table>

0
ответ дан Bibberty 4 March 2019 в 22:44
поделиться

Вам не нужны две функции для этого. Просто установите div, соответствующий divId, чтобы он был видимым, а остальные скрывайте. Тогда не имеет значения, сколько раз вы нажмете одну и ту же кнопку, этот div будет показан.

var divs = ["Div1", "Div2", "Div3"];
function divVisibility(divId) {
  for (var div of divs) {
    if (div === divId) {
    	document.getElementById(div).style.display = 'block';
    }
    else {
    	document.getElementById(div).style.display = 'none';
    }
  }
}
<table style="margin-left: auto; margin-right: auto;" border="0" cellpadding="10">
  <tbody>
    <tr>
      <td><button onclick="divVisibility('Div1');">Div1</button></td>
      <td><button onclick="divVisibility('Div2');">Div2</button></td>
      <td><button onclick="divVisibility('Div3');">Div3</button></td>
    </tr>
  </tbody>
</table>

<table>
<div id="Div1">
    Div1 Content
    </div>
    <div id="Div2" style="display: none;">
    Div2 Content
    </div>
    <div id="Div3" style="display: none;">
    Div3 Content
    </div>
</table>

0
ответ дан FishBasketGordo 4 March 2019 в 22:44
поделиться
Другие вопросы по тегам:

Похожие вопросы: