代码之家  ›  专栏  ›  技术社区  ›  3gwebtrain

Javascript切换问题

  •  -1
  • 3gwebtrain  · 技术社区  · 15 年前

    window.onload = function (){  
       var title = document.getElementsByTagName('h1')[0].id = "heading1";  
       document.getElementById(title).onclick = function (e){  
              var para = this.nextSibling.style.display = 'block';  
              var newVal = (para == "block") ? "none" : "block";  
              alert(newVal);  
       }  
    }  
    

    我需要的结果是警报值从block切换到none并返回。但我总是得到“没有”。我的代码有什么问题?

    2 回复  |  直到 15 年前
        1
  •  3
  •   GitaarLAB    11 年前
    window.onload = function () {
      var firstH1 = document.getElementsByTagName('h1')[0];
      firstH1.id = "heading1";
      firstH1.onclick = function() {
        var currentValue = this.nextSibling.style.display;
        this.nextSibling.style.display = (currentValue == "none") ? "block" : "none";
      }
    } 
    

    注意:我简化了元素获取,因为获取一个元素、给它分配一个id,然后再次使用这个id来查找同一个元素是没有意义的。

    我还切换了block/none顺序,因为如果没有显示样式,那么它将是空白的——您的第一次单击会将block分配给它——并且它不会消失。就这样。

        2
  •  2
  •   rob    15 年前

    好吧,para总是“block”,因此newVal总是“none”。所以这种行为是意料之中的。你想干什么?您没有用当前代码切换属性。