JS 切换(显示)文本最简单的方法

JS Toggle (display) text the simplest way

我正在尝试以下一种方式更改可见性(显示)文本 http://jsfiddle.net/xL8hyoye/。它不起作用,但应该可以。

HTML 代码在这里:

<a href="#" onclick="toggle_visibility('foo');">Click here to toggle visibility of element #foo</a>
<div id="foo">This is foo</div>

JS代码在这里:

function toggle_visibility(id) {
   var e = document.getElementById(id);
   if(e.style.display == 'block')
      e.style.display = 'none';
   else
      e.style.display = 'block';
}

(code from this source http://blog.movalog.com/a/javascript-toggle-visibility/)


替换时解决:

function toggle_visibility(id) {

作者:

toggle_visibility = function(id) {

(感谢 Zakaria Acharki)。

这是可见变量区域的原因,在第一种情况下 - JSFiddle 外部库设置(设置无库后需要设置 'No wrap in head')。 正如 amit.rk3 在这里所说的类似主题

Inline event handler not working in JSFiddle

这里证明(js和html代码没有改变,只有'No wrap in head'设置)http://jsfiddle.net/xL8hyoye/3/

更新您的函数声明,请参阅 working Fiddle :

toggle_visibility = function(id) {
   var e = document.getElementById(id);
   if(e.style.display == 'block')
      e.style.display = 'none';
   else
      e.style.display = 'block';
}

您需要设置div元素的初始CSS显示值(默认设置为块,但JS无法访问)。

    function toggle_visibility(id) {
       var e = document.getElementById(id);
       if(e.style.display == 'block')
          e.style.display = 'none';
       else
          e.style.display = 'block';
    }
<a href="#" onclick="toggle_visibility('foo');">Click here to toggle visibility of element #foo</a>
<div id="foo" style="display: block;">This is foo</div>

或检查 style.display 是否为空

    function toggle_visibility(id) {
       var e = document.getElementById(id);
       if(e.style.display == 'block' || e.style.display == '')
          e.style.display = 'none';
       else
          e.style.display = 'block';
    }
<a href="#" onclick="toggle_visibility('foo');">Click here to toggle visibility of element #foo</a>
<div id="foo">This is foo</div>