使用JavaScript显示/隐藏'div'

Jak*_*Ols 171 html javascript onclick

对于我正在做的网站,我想加载一个div,然后隐藏另一个div,然后有两个按钮,使用JavaScript在div之间切换视图.

这是我目前的代码

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;
}
Run Code Online (Sandbox Code Playgroud)
<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>
Run Code Online (Sandbox Code Playgroud)

替换div2的第二个函数不起作用,但第一个是.

Jos*_*ier 394

如何显示或隐藏元素:

为了显示或隐藏元素,请操作元素的样式属性.在大多数情况下,您可能只想更改元素的display属性:

element.style.display = 'none';           // Hide
element.style.display = 'block';          // Show
element.style.display = 'inline';         // Show
element.style.display = 'inline-block';   // Show
Run Code Online (Sandbox Code Playgroud)

或者,如果你仍然希望元素占用空间(就像你要隐藏表格单元格一样),你可以改为改变元素的visibility属性:

element.style.visibility = 'hidden';      // Hide
element.style.visibility = 'visible';     // Show
Run Code Online (Sandbox Code Playgroud)

隐藏元素集合:

如果要隐藏元素集合,只需遍历每个元素并将元素更改displaynone:

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

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';
  }
}
Run Code Online (Sandbox Code Playgroud)
<div class="target">This div will be hidden.</div>

<span class="target">This span will be hidden as well.</span>
Run Code Online (Sandbox Code Playgroud)

显示元素的集合:

大多数情况下,您可能只是在display: none和之间切换display: block,这意味着在显示元素集合时,以下内容可能就足够了.

display如果您不希望默认为第二个参数,则可以选择将其指定为第二个参数block.

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

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

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';
  }
}
Run Code Online (Sandbox Code Playgroud)
<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" />
Run Code Online (Sandbox Code Playgroud)

或者,用于显示元素的更好方法是仅移除内联display样式以便将其恢复到其初始状态.然后检查display元素的计算样式,以确定它是否被级联规则隐藏.如果是,则显示元素.

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';
    }
  }
}
Run Code Online (Sandbox Code Playgroud)

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';
    }
  }
}
Run Code Online (Sandbox Code Playgroud)
<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>
Run Code Online (Sandbox Code Playgroud)

(如果你想更进一步,你甚至可以模仿jQuery做什么,并通过将元素附加到空白iframe(没有冲突的样式表)来确定元素的默认浏览器样式,然后检索计算的样式.这样做,你将知道display元素的真正初始属性值,您不必硬编码值以获得所需的结果.)

切换显示:

同样,如果要切换display元素或元素集合,可以简单地遍历每个元素,并通过检查display属性的计算值来确定它是否可见.如果它可见,则设置displaynone,否则删除内联display样式,如果它仍然隐藏,则将其设置display为指定值或硬编码默认值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';
  }
}
Run Code Online (Sandbox Code Playgroud)
// Usage:
document.getElementById('toggle-button').addEventListener('click', function () {
  toggle(document.querySelectorAll('.target'));
});
Run Code Online (Sandbox Code Playgroud)

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';
  }
}
Run Code Online (Sandbox Code Playgroud)
.target { display: none; }
Run Code Online (Sandbox Code Playgroud)
<button id="toggle-button">Toggle display</button>

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

<div class="target">Toggle the div.</div>
Run Code Online (Sandbox Code Playgroud)


小智 89

您还可以使用jQuery JavaScript框架:

隐藏Div Block

$(".divIDClass").hide();
Run Code Online (Sandbox Code Playgroud)

显示Div Block

$(".divIDClass").show();
Run Code Online (Sandbox Code Playgroud)

  • 这不是贬低的原因.问题没有具体说不使用jquery,而且来到这里查看答案的其他人可能没有与OP相同的限制. (50认同)
  • 问题没有提到使用jQuery (16认同)
  • @KinjalDixit如果IMRUP想要添加一个注释,他的答案不使用vanilla JS而是依赖于jQuery,那么它会有一些优点,即使原始问题没有标记为jQuery /甚至提到jQuery.目前看来,它是一个使用库的答案,但没有提到它这样做,很少(尽管可能是所有必要的)解释,并且混淆使用选择器(使用类选择器同时说明*ID*?).按照目前的情况,我不认为这个问题是有用的答案. (5认同)
  • 当添加一个jQuery示例(这是完全有效的方法恕我直言)时,还请提供一个vanilla JS示例进行比较,并向OP解释其差异.如今许多新开发人员都认为jQuery _is_是JavaScript.一点点教育可以帮助他们做出正确的选择. (3认同)
  • 我认为这个答案非常有用,并且与问题相关。 (3认同)

Leo*_*Leo 43

你可以简单地操纵有问题的div的风格......

document.getElementById('target').style.display = 'none';
Run Code Online (Sandbox Code Playgroud)


小智 18

您可以使用Js功能隐藏/显示Div.以下样本

<script>
    function showDivAttid(){

        if(Your Condition) {

            document.getElementById("attid").style.display = 'inline';
        }
        else
        {
            document.getElementById("attid").style.display = 'none';
        }
    }

</script>
Run Code Online (Sandbox Code Playgroud)

HTML -

<div  id="attid" style="display:none;">Show/Hide this text</div>
Run Code Online (Sandbox Code Playgroud)


Ifc*_*0o1 14

使用风格:

<style type="text/css">
   .hidden {
        display: none;
   {
   .visible {
        display: block;
   }
</style>
Run Code Online (Sandbox Code Playgroud)

在JavaScript中使用事件处理程序比onclick=""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>
Run Code Online (Sandbox Code Playgroud)

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>
Run Code Online (Sandbox Code Playgroud)

jQuery可以帮助您轻松操作DOM元素!


小智 12

我发现这个简单的JavaScript代码非常方便!

#<script type="text/javascript">
    function toggle_visibility(id) 
    {
        var e = document.getElementById(id);
        if ( e.style.display == 'block' )
            e.style.display = 'none';
        else
            e.style.display = 'block';
    }
</script>
Run Code Online (Sandbox Code Playgroud)


sus*_*097 9

只需简单设置ID的样式属性即可:

显示隐藏的div

<div id="xyz" style="display:none">
     ...............
</div>
//In JavaScript

document.getElementById('xyz').style.display ='block';  // to display
Run Code Online (Sandbox Code Playgroud)

隐藏显示的div

<div id="xyz">
     ...............
</div>
//In JavaScript

document.getElementById('xyz').style.display ='none';  // to hide
Run Code Online (Sandbox Code Playgroud)


小智 5

将您的 HTML 设置为

<div id="body" hidden="">
 <h1>Numbers</h1>
 </div>
 <div id="body1" hidden="hidden">
 Body 1
 </div>
Run Code Online (Sandbox Code Playgroud)

现在将javascript设置为

function changeDiv()
  {
  document.getElementById('body').hidden = "hidden"; // hide body div tag
  document.getElementById('body1').hidden = ""; // show body1 div tag
  document.getElementById('body1').innerHTML = "If you can see this, JavaScript function worked"; 
  // display text if JavaScript worked
   }
Run Code Online (Sandbox Code Playgroud)