de-vraag
  • Pytania
  • Tagi
  • Użytkownicy
Powiadomienia
Nagrody
Rejestracja
Po zarejestrowaniu się, będziesz otrzymywać powiadomienia o odpowiedziach i komentarzach do swoich pytań.
Zaloguj się
Brak tłumaczeń pasujących do Twojego wyszukiwania Jeśli masz już konto, zaloguj się, aby sprawdzić nowe powiadomienia.
Za dodane pytania, odpowiedzi i komentarze przewidziane są nagrody.
Więcej
Źródło
Edytuj
Jake Ols
Jake Ols
Question

Pokaż/ukryj 'div' za pomocą JavaScript

Dla strony internetowej, którą robię, chcę załadować jeden div i ukryć inny, a następnie mieć dwa przyciski, które będą przełączać widoki między div za pomocą JavaScript.

To jest mój obecny kod.

function replaceContentInContainer(target, source) {
  document.getElementById(target).innerHTML = document.getElementById(source).innerHTML;
}

function replaceContentInOtherContainer(replace_target, source) {
  document.getElementById(replace_target).innerHTML = document.getElementById(source).innerHTML;
}
<html>
<button onClick="replaceContentInContainer('target', 'replace_target')">View Portfolio</button>
<button onClick="replaceContentInOtherContainer('replace_target', 'target')">View Results</button>

<div>
  <span id="target">div1</span>
</div>

<div style="display:none">
  <span id="replace_target">div2</span>
</div>

Druga funkcja, która zastępuje div2 nie działa, ale pierwsza tak.

170 2014-01-12T01:12:04+00:00 3
 Teocci
Teocci
Edytowane pytanie 23. stycznia 2019 в 7:46
Programowanie
javascript
html
onclick
Popular videos
Build A Clock With JavaScript
Build A Clock With JavaScript
3 lata temu
Resizable and draggable div using JavaScript (Vanilla) - Part 1
Resizable and draggable div using JavaScript (Vanilla) - Part 1
2 lata temu
How to Hide and Show DIV Element Using Javascript
How to Hide and Show DIV Element Using Javascript
2 lata temu
Нажатие на кнопку в JavaScript (событие и функции)
Нажатие на кнопку в JavaScript (событие и функции)
1 rok temu
Show and Hide Element On Click Using JavaScript - How To Code School
Show and Hide Element On Click Using JavaScript - How To Code School
3 lata temu
Hide show div,elements on click in javascript 2020
Hide show div,elements on click in javascript 2020
2 lata temu
Javascript Siblings - Add Remove Class - Set Active DIV [ With Source Code ]
Javascript Siblings - Add Remove Class - Set Active DIV [ With Source Code ]
4 lata temu
Javascript #2 - show or hide div based on click event
Javascript #2 - show or hide div based on click event
1 rok temu
Kurs JavaScript odc. 2: Mechanika działania skryptów: uchwyty, funkcje, zdarzenia
Kurs JavaScript odc. 2: Mechanika działania skryptów: uchwyty, funkcje, zdarzenia
7 lat temu
JS #04: Get and Set Position Of HTML Elements Div Javascript
JS #04: Get and Set Position Of HTML Elements Div Javascript
5 lat temu
Как сделать аккордеон на: чистом CSS / прекрасном JS / ужасном jQuery?
Как сделать аккордеон на: чистом CSS / прекрасном JS / ужасном jQuery?
1 rok temu
The &quot;scroll&quot; event in JavaScript | window.onscroll
The "scroll" event in JavaScript | window.onscroll
3 lata temu
Простой Drag and Drop на чистом Javascript
Простой Drag and Drop на чистом Javascript
2 lata temu
JavaScript: Show and hide DIV&#39;s
JavaScript: Show and hide DIV's
10 lat temu
JavaScript Client-side Form Validation
JavaScript Client-side Form Validation
2 lata temu
Мини-игра на Javascript для детей | Эффект 3d при наведении без плагинов
Мини-игра на Javascript для детей | Эффект 3d при наведении без плагинов
9 miesięcy temu
Учим JavaScript 36. Вкладки
Учим JavaScript 36. Вкладки
5 lat temu
« Poprzedni
Następny »
To pytanie ma 1 odpowiedź w języku angielskim, aby je przeczytać zaloguj się na swoje konto.
Solution / Answer
Josh Crozier
Josh Crozier
12. stycznia 2014 в 1:33
2014-01-12T01:33:41+00:00
Więcej
Źródło
Edytuj
#23345513

Jak pokazać lub ukryć element:

W celu pokazania lub ukrycia elementu należy manipulować elementem'właściwością style. W większości przypadków, prawdopodobnie chcesz po prostu zmienić element's właściwość display:

element.style.display = 'none';           // Hide
element.style.display = 'block';          // Show
element.style.display = 'inline';         // Show
element.style.display = 'inline-block';   // Show

Alternatywnie, jeśli nadal chcesz, aby element zajmował miejsce (np. jeśli chcesz ukryć komórkę tabeli), możesz zmienić element'właściwość visibility zamiast tego:

element.style.visibility = 'hidden';      // Hide
element.style.visibility = 'visible';     // Show

Ukrycie kolekcji elementów:

Jeśli chcesz ukryć kolekcję elementów, po prostu iteruj nad każdym elementem i zmień element's display na none:

function hide (elements) {
  elements = elements.length ? elements : [elements];
  for (var index = 0; index < elements.length; index++) {
    elements[index].style.display = 'none';
  }
}
// Usage:
hide(document.querySelectorAll('.target'));
hide(document.querySelector('.target'));
hide(document.getElementById('target'));
hide(document.querySelectorAll('.target'));

function hide (elements) {
  elements = elements.length ? elements : [elements];
  for (var index = 0; index < elements.length; index++) {
    elements[index].style.display = 'none';
  }
}
<div class="target">This div will be hidden.</div>

<span class="target">This span will be hidden as well.</span>

Pokazanie kolekcji elementów:

Przez większość czasu, prawdopodobnie będziesz po prostu przełączał się pomiędzy display: none i display: block, co oznacza, że poniższe mogą być wystarczające podczas pokazywania kolekcji elementów.

Opcjonalnie możesz podać pożądany display jako drugi argument, jeśli nie chcesz, aby domyślnie był to block.

function show (elements, specifiedDisplay) {
  elements = elements.length ? elements : [elements];
  for (var index = 0; index < elements.length; index++) {
    elements[index].style.display = specifiedDisplay || 'block';
  }
}
// Usage:
var elements = document.querySelectorAll('.target');
show(elements);

show(elements, 'inline-block'); // The second param allows you to specify a display value
var elements = document.querySelectorAll('.target');

show(elements, 'inline-block'); // The second param allows you to specify a display value

show(document.getElementById('hidden-input'));

function show (elements, specifiedDisplay) {
  elements = elements.length ? elements : [elements];
  for (var index = 0; index < elements.length; index++) {
    elements[index].style.display = specifiedDisplay || 'block';
  }
}
<div class="target" style="display: none">This hidden div should have a display of 'inline-block' when it is shown.</div>

<span>Inline span..</span>

<input id="hidden-input" />

Alternatywnie, lepszym podejściem do pokazywania elementu(ów) byłoby po prostu usunięcie stylizacji inline display w celu przywrócenia go do stanu początkowego. Następnie należy sprawdzić obliczony styl display elementu w celu określenia, czy jest on ukrywany przez regułę kaskadową. Jeśli tak, to pokaż element.

function show (elements, specifiedDisplay) {
  var computedDisplay, element, index;

  elements = elements.length ? elements : [elements];
  for (index = 0; index < elements.length; index++) {
    element = elements[index];

    // Remove the element's inline display styling
    element.style.display = '';
    computedDisplay = window.getComputedStyle(element, null).getPropertyValue('display');

    if (computedDisplay === 'none') {
        element.style.display = specifiedDisplay || 'block';
    }
  }
}
show(document.querySelectorAll('.target'));

function show (elements, specifiedDisplay) {
  var computedDisplay, element, index;

  elements = elements.length ? elements : [elements];
  for (index = 0; index < elements.length; index++) {
    element = elements[index];

    // Remove the element's inline display styling
    element.style.display = '';
    computedDisplay = window.getComputedStyle(element, null).getPropertyValue('display');

    if (computedDisplay === 'none') {
        element.style.display = specifiedDisplay || 'block';
    }
  }
}
<span class="target" style="display: none">Should revert back to being inline.</span>

<span class="target" style="display: none">Inline as well.</span>

<div class="target" style="display: none">Should revert back to being block level.</div>

<span class="target" style="display: none">Should revert back to being inline.</span>

(Jeśli chcesz pójść o krok dalej, możesz nawet naśladować to, co robi jQuery i określić element'domyślnej stylizacji przeglądarki przez dołączenie elementu do pustej iframe (bez konfliktowego arkusza stylów), a następnie pobrać obliczoną stylizację. W ten sposób, będziesz znał prawdziwą początkową wartość właściwości display elementu i nie będziesz musiał twardo kodować wartości, aby uzyskać pożądane rezultaty).

Przełączanie wyświetlania:

Podobnie, jeśli chciałbyś przełączyć display elementu lub kolekcji elementów, mógłbyś po prostu iterować po każdym elemencie i określić, czy jest on widoczny poprzez sprawdzenie obliczonej wartości właściwości display. Jeśli jest on widoczny, ustawiamy display na none, w przeciwnym razie usuwamy stylizację inline display, a jeśli jest on nadal ukryty, ustawiamy display na podaną wartość lub domyślną, block.

function toggle (elements, specifiedDisplay) {
  var element, index;

  elements = elements.length ? elements : [elements];
  for (index = 0; index < elements.length; index++) {
    element = elements[index];

    if (isElementHidden(element)) {
      element.style.display = '';

      // If the element is still hidden after removing the inline display
      if (isElementHidden(element)) {
        element.style.display = specifiedDisplay || 'block';
      }
    } else {
      element.style.display = 'none';
    }
  }
  function isElementHidden (element) {
    return window.getComputedStyle(element, null).getPropertyValue('display') === 'none';
  }
}
// Usage:
document.getElementById('toggle-button').addEventListener('click', function () {
  toggle(document.querySelectorAll('.target'));
});
document.getElementById('toggle-button').addEventListener('click', function () {
    toggle(document.querySelectorAll('.target'));
});

function toggle (elements, specifiedDisplay) {
  var element, index;

  elements = elements.length ? elements : [elements];
  for (index = 0; index < elements.length; index++) {
    element = elements[index];

    if (isElementHidden(element)) {
      element.style.display = '';

      // If the element is still hidden after removing the inline display
      if (isElementHidden(element)) {
        element.style.display = specifiedDisplay || 'block';
      }
    } else {
      element.style.display = 'none';
    }
  }
  function isElementHidden (element) {
    return window.getComputedStyle(element, null).getPropertyValue('display') === 'none';
  }
}
.target { display: none; }
<button id="toggle-button">Toggle display</button>

<span class="target">Toggle the span.</span>

<div class="target">Toggle the div.</div>
Josh Crozier
Josh Crozier
Edytowana odpowiedź 4. listopada 2015 в 6:49
391
0
 Leo
Leo
12. stycznia 2014 в 1:20
2014-01-12T01:20:47+00:00
Więcej
Źródło
Edytuj
#23345512

Możesz po prostu manipulować stylem danego div'a...

document.getElementById('target').style.display = 'none';
43
0
 Ifch0o1
Ifch0o1
12. stycznia 2014 в 1:54
2014-01-12T01:54:09+00:00
Więcej
Źródło
Edytuj
#23345514

Używanie stylu:

<style type="text/css">
   .hidden {
        display: none;
   {
   .visible {
        display: block;
   }
</style>

Użycie obsługi zdarzeń w JavaScript jest lepsze niż atrybut onclick="" w HTML:

<button id="RenderPortfolio_Btn">View Portfolio</button>
<button id="RenderResults_Btn">View Results</button>

<div class="visible" id="portfolio">
    <span>div1</span>
</div>

<div class"hidden" id="results">
    <span>div2</span>
</div>

JavaScript:

<script type="text/javascript">

    var portfolioDiv = document.getElementById('portfolio');
    var resultsDiv = document.getElementById('results');

    var portfolioBtn = document.getElementById('RenderPortfolio_Btn');
    var resultsBtn = document.getElementById('RenderResults_Btn');

    portfolioBtn.onclick = function() {
        resultsDiv.setAttribute('class', 'hidden');
        portfolioDiv.setAttribute('class', 'visible');
    };

    resultsBtn.onclick = function() {
        portfolioDiv.setAttribute('class', 'hidden');
        resultsDiv.setAttribute('class', 'visible');
    };

</script>

jQuery może pomóc Ci łatwo manipulować elementami DOM!

Peter Mortensen
Peter Mortensen
Edytowana odpowiedź 12. lipca 2014 в 10:21
14
0
Dodaj pytanie
Kategorie
Wszystkie
Technologia
Kultura / Rekreacja
Życie / Sztuka
Nauka
Profesjonalny
Biznes
Użytkownicy
Wszystkie
Nowy
Popularny
1
mohidil qodirova
Zarejestrowany 5 godzin temu
2
Jasur Fozilov
Zarejestrowany 19 godzin temu
3
Zuxriddin Muydinov
Zarejestrowany 1 dzień temu
4
Денис Анненский
Zarejestrowany 3 dni temu
5
365
Zarejestrowany 1 tydzień temu
BG
DA
DE
EL
ES
ET
FR
ID
IT
JA
KO
NL
PL
PT
RU
SL
SV
TR
ZH
© de-vraag 2022
Źródło
stackoverflow.com
na podstawie licencji cc by-sa 3.0 z przypisaniem