JavaScript 隐藏/显示元素

IT技术 javascript
2021-01-10 08:47:38

按下后如何隐藏“编辑”链接?当我按编辑时,我还可以隐藏“lorem ipsum”文本吗?

<script type="text/javascript">
function showStuff(id) {
  document.getElementById(id).style.display = 'block';
}
</script>


<td class="post">

  <a href="#" onclick="showStuff('answer1'); return false;">Edit</a>
  <span id="answer1" style="display: none;">
    <textarea rows="10" cols="115"></textarea>
  </span>

  Lorem ipsum Lorem ipsum Lorem ipsum Lorem ipsum 
</td>
6个回答

function showStuff(id, text, btn) {
    document.getElementById(id).style.display = 'block';
    // hide the lorem ipsum text
    document.getElementById(text).style.display = 'none';
    // hide the link
    btn.style.display = 'none';
}
<td class="post">

<a href="#" onclick="showStuff('answer1', 'text1', this); return false;">Edit</a>
<span id="answer1" style="display: none;">
<textarea rows="10" cols="115"></textarea>
</span>

<span id="text1">Lorem ipsum Lorem ipsum Lorem ipsum Lorem ipsum</span>
</td>

如果您不想让 JavaScript 将 url 从 yourdomain.com/ 更改为 yourdomain.com/#,则可能需要它......此外,窗口的滚动可能会跳跃,或者可能会出现任何其他未考虑的问题。
2021-03-10 08:47:38
是的我知道。但我想知道,因为如果您使用 # 作为链接,则不需要它。
2021-03-22 08:47:38
除非您的目标是 IE4,否则可以使用可见性属性而不是显示;)
2021-03-27 08:47:38
你为什么要添加return falseonclick
2021-04-05 08:47:38
我错过了一个测试链接,这就是为什么你可以在这里尝试:konzertagentur-koerner.de/test 但是感谢你的好代码
2021-04-07 08:47:38

您还可以使用此代码来显示/隐藏元素:

document.getElementById(id).style.visibility = "hidden";
document.getElementById(id).style.visibility = "visible";

注意style.visibility之间的区别在于style.display当使用visibility:hidden 与display:none 不同时,标签不可见,但在页面上为其分配了空间。标记已呈现,只是在页面上看不到。

请参阅此链接以查看差异。

我建议这样做来隐藏元素(正如其他人所建议的那样):

document.getElementById(id).style.display = 'none';

但是为了使元素可见,我建议这样做(而不是 display = 'block'):

document.getElementById(id).style.display = '';

原因是使用 display = 'block' 会导致在我正在处理的页面上的 IE (11) 和 Chrome(版本 43.0.2357.130 m)中可见的元素旁边有额外的边距/空白。

当你第一次在 Chrome 中加载一个页面时,一个没有 style 属性的元素将在 DOM 检查器中显示如下:

element.style {
}

正如预期的那样,使用标准 JavaScript 将其隐藏起来:

element.style {
  display: none;
}

使用 display = 'block' 使其再次可见,将其更改为:

element.style {
  display: block;
}

这和原来的不一样。在大多数情况下,这很可能不会产生任何影响。但在某些情况下,它确实会引入异常。

使用 display = '' 确实可以在 DOM 检查器中将其恢复到其原始状态,因此这似乎是更好的方法。

是的!最好不要使用该block选项。想知道这个道具的默认值是什么:p
2021-03-20 08:47:38
正确,最好省略 display: 块。
2021-04-05 08:47:38

我想向您推荐JQuery选项。

$("#item").toggle();
$("#item").hide();
$("#item").show();

例如:

$(document).ready(function(){
   $("#item").click(function(event){
     //Your actions here
   });
 });
就性能而言,hide() 和 jquery 可见性方法似乎不是一个好的选择,正如 Addy Osmani 在这里解释的那样:speakerdeck.com/addyosmani/devtools-state-of-the-union-2015
2021-03-13 08:47:38
有时 JQuery 不是必需的;如果这是您在页面上唯一需要做的事情,那么加载库的开销远远超过编写简洁 JavaScript 的需要。
2021-04-09 08:47:38
虽然这可能有效,但作者没有使用 jQuery,所以这似乎不是问题的相关答案。
2021-04-09 08:47:38

您可以使用元素的隐藏属性:

document.getElementById("test").hidden=true;
document.getElementById("test").hidden=false
2021-03-12 08:47:38
如果要在display元素没有hidden属性属性设置为元素,请按以下方式定位它:.my-el:not([hidden]) { display: flex }
2021-03-18 08:47:38
警告:如果display设置了 CSS属性,则忽略此属性
2021-03-21 08:47:38
不幸的是,您似乎无法在 CSS 样式表中使用它。因此,您要么必须在 HTML 中设置它,要么结合使用display: none;etc.
2021-04-06 08:47:38
哦!我喜欢这个的原因是因为你display=""现在可能有不同的value观。
2021-04-07 08:47:38