kzen.dev
  • Frågor
  • Taggar
  • Användare
Meddelanden
Belöningar
Registrering
När du har registrerat dig kommer du att få information om svar och kommentarer på dina frågor.
Logga in
Om du redan har ett konto loggar du in för att kontrollera nya meddelanden.
Det kommer att finnas belöningar för frågor, svar och kommentarer.
Mer
Källa
Redigera
Jake Ols
Jake Ols
Question

Visa/dölj 'div' med JavaScript

På en webbplats som jag håller på att göra vill jag ladda en div och dölja en annan, och sedan ha två knappar som växlar mellan div:erna med hjälp av JavaScript.

Detta är min nuvarande 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>

Den andra funktionen som ersätter div2 fungerar inte, men den första fungerar.

170 2014-01-12T01:12:04+00:00 3
 Teocci
Teocci
Redigerad fråga 2019ör januari 2019 в 7:46
Programmering
javascript
html
onclick
Popular videos
JavaScript for Web Apps, by Tomas Reimers and Mike Rizzo
JavaScript for Web Apps, by Tomas Reimers and Mike Rizzo
för 9 år sedan
Customizing Cloud9 and the CS50 IDE by Dan Armendariz
Customizing Cloud9 and the CS50 IDE by Dan Armendariz
för 7 år sedan
Meteor: a better way to build apps by Roger Zurawicki
Meteor: a better way to build apps by Roger Zurawicki
för 8 år sedan
CS50 2014 - Week 7
CS50 2014 - Week 7
för 8 år sedan
Web Programming - Computer Science for Business Leaders 2016
Web Programming - Computer Science for Business Leaders 2016
för 7 år sedan
The Great Gildersleeve: Bronco and Marjorie Engaged / Hayride / Engagement Announcement
The Great Gildersleeve: Bronco and Marjorie Engaged / Hayride / Engagement Announcement
för 10 år sedan
Resizable and draggable div using JavaScript (Vanilla) - Part 1
Resizable and draggable div using JavaScript (Vanilla) - Part 1
för 4 år sedan
JavaScript Document object model (DOM) за час. Изменение HTML CSS. Атрибуты и свойства. Окружение.
JavaScript Document object model (DOM) за час. Изменение HTML CSS. Атрибуты и свойства. Окружение.
för 2 år sedan
How to Hide and Show DIV Element Using Javascript
How to Hide and Show DIV Element Using Javascript
för 4 år sedan
JavaScript Tutorial For Beginners #40 - The onClick Event
JavaScript Tutorial For Beginners #40 - The onClick Event
för 8 år sedan
Show and Hide Element On Click Using JavaScript - How To Code School
Show and Hide Element On Click Using JavaScript - How To Code School
för 4 år sedan
Hide show div,elements on click in javascript 2020
Hide show div,elements on click in javascript 2020
för 4 år sedan
Cât de mare este Alphabet ???
Cât de mare este Alphabet ???
för 3 år sedan
Javascript Siblings - Add Remove Class - Set Active DIV [ With Source Code ]
Javascript Siblings - Add Remove Class - Set Active DIV [ With Source Code ]
för 6 år sedan
Javascript #2 - show or hide div based on click event
Javascript #2 - show or hide div based on click event
för 3 år sedan
Ruby On Rails, by Gabriel Guimaraes
Ruby On Rails, by Gabriel Guimaraes
för 9 år sedan
Partial Print Document JavaScript Tutorial HTML div Content
Partial Print Document JavaScript Tutorial HTML div Content
för 9 år sedan
JS #04: Get and Set Position Of HTML Elements Div Javascript
JS #04: Get and Set Position Of HTML Elements Div Javascript
för 6 år sedan
JavaScript Client-side Form Validation
JavaScript Client-side Form Validation
för 3 år sedan
Introducing Divs and controlling them with classes and ids
Introducing Divs and controlling them with classes and ids
för 9 år sedan
How to make a whole div clickable with just HTML - No Javascript or JQuery needed.
How to make a whole div clickable with just HTML - No Javascript or JQuery needed.
för 4 år sedan
How can I change the contents of a Div with Javascript? | No JQuery | Javascript &amp; HTML Fundamentals
How can I change the contents of a Div with Javascript? | No JQuery | Javascript & HTML Fundamentals
för 4 år sedan
Обучение JavaScript. Урок для начинающих. Скрипты для сайта интернет магазина
Обучение JavaScript. Урок для начинающих. Скрипты для сайта интернет магазина
för 2 år sedan
JavaScript Shopping Cart Tutorial for Beginners
JavaScript Shopping Cart Tutorial for Beginners
för 4 år sedan
It-verktyg: Grundkurs i föreningens webbsidor
It-verktyg: Grundkurs i föreningens webbsidor
för 2 år sedan
1ME322 - L4
1ME322 - L4
för 2 år sedan
1ME323 - F2a
1ME323 - F2a
för 2 år sedan
jQuery_02_Börja med jQuery
jQuery_02_Börja med jQuery
för 5 år sedan
jQuery 3 Show Hide
jQuery 3 Show Hide
för 9 år sedan
Our Miss Brooks: The Bookie / Stretch Is In Love Again / The Dancer
Our Miss Brooks: The Bookie / Stretch Is In Love Again / The Dancer
för 10 år sedan
CSS Efecto - 05 Triangulo Lateral @JoseCodFacilito
CSS Efecto - 05 Triangulo Lateral @JoseCodFacilito
för 8 år sedan
« Föregående
Nästa »
Den här frågan har 1 svar på engelska, för att läsa dem logga in på ditt konto.
Solution / Answer
Josh Crozier
Josh Crozier
2014ör januari 2014 в 1:33
2014-01-12T01:33:41+00:00
Mer
Källa
Redigera
#23345513

Hur du visar eller döljer ett element:

För att visa eller dölja ett element manipulerar du elementets stilegenskap. I de flesta fall vill du förmodligen bara ändra elementets display-egenskap:

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

Om du fortfarande vill att elementet ska ta plats (som om du vill dölja en tabellcell) kan du ändra elementets visibility-egenskap i stället:

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

Hölja en samling element:

Om du vill dölja en samling element är det bara att iterera över varje element och ändra elementets display till 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>

Visa en samling element:

För det mesta kommer du förmodligen bara att växla mellan display: none och display: block, vilket innebär att följande kan vara tillräckligt när du visar en samling element.

Du kan eventuellt ange önskad display som andra argument om du inte vill att det ska vara block som standard.

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" />

Alternativt skulle en bättre metod för att visa elementet/elementen vara att bara ta bort inline-formatet display för att återställa det till sitt ursprungliga tillstånd. Kontrollera sedan den beräknade display-stilen för elementet för att avgöra om det döljs av en kaskadregel. Om så är fallet, visa elementet.

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>

(Om du vill ta det ett steg längre kan du till och med efterlikna vad jQuery gör och bestämma elementets standardformat genom att lägga till elementet i en tom iframe (utan ett konfliktfyllt formatmallblad) och sedan hämta det beräknade formatet. På så sätt får du reda på elementets sanna ursprungliga värde för egenskapen display och du behöver inte hårdkoda ett värde för att få önskat resultat).

Växla visningen:

På samma sätt, om du vill växla display för ett element eller en samling element, kan du helt enkelt iterera över varje element och avgöra om det är synligt genom att kontrollera det beräknade värdet av display-egenskapen. Om det är synligt, sätt display till none, annars tar du bort inline-formatet display, och om det fortfarande är dolt, sätter du display till det angivna värdet eller det hårdkodade standardvärdet, 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
Redigerat svar 2015ör november 2015 в 6:49
391
0
Artificial intelligence to parse product page
productapi.dev
 Leo
Leo
2014ör januari 2014 в 1:20
2014-01-12T01:20:47+00:00
Mer
Källa
Redigera
#23345512

Du kan helt enkelt manipulera stilen för div:en i fråga...

document.getElementById('target').style.display = 'none';
43
0
Artificial intelligence to parse product page
productapi.dev
 Ifch0o1
Ifch0o1
2014ör januari 2014 в 1:54
2014-01-12T01:54:09+00:00
Mer
Källa
Redigera
#23345514

Användning av stil:

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

Det är bättre att använda en händelsehanterare i JavaScript än attributet onclick="" i 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 kan hjälpa dig att enkelt manipulera DOM-element!

Peter Mortensen
Peter Mortensen
Redigerat svar 2014ör juli 2014 в 10:21
14
0
Lägg till en fråga
Kategorier
Alla
Teknik
Kultur / fritid
Livet / Konst
Vetenskap
Professionell
Företag
Användare
Alla
Ny
Populära
1
Inessa bu
Registrerad för 1 månad sedan
2
Denis Babushkin
Registrerad för 1 månad sedan
3
asakuno asakuno
Registrerad för 1 månad sedan
4
aldo salerno
Registrerad för 1 månad sedan
5
Анна Батицкая
Registrerad för 1 månad sedan
Artificial intelligence to parse product page
productapi.dev
BG
DA
DE
EL
ES
ET
FR
ID
IT
JA
NL
NO
PL
PT
RO
RU
SL
SV
TR
ZH
© kzen.dev 2023
Källa
stackoverflow.com
under licens cc by-sa 3.0 med angivande av