(JS+HTML+CSS)オーバーレイに苦戦した

(JS+HTML+CSS)オーバーレイに苦戦した

ウェブ上でよくあるオーバーレイをチョチョッと実装するはずだった.

結局うまくいったからよかったけど,こんなの何度もやり直す自分に喝.
でも,うまく行かなかった方はなぜダメなのかわからない.

サンプルはこちら

うまくいったコードは以下.

<!DOCTYPE html>
<html>
<head>

<meta charset="UTF-8" />

<style>
    body {
        width: 100%;
        height: 100%;
        margin: 0;
        padding: 0;
    }
    #src {
        background-color: lightblue;
        position: fixed;
        top: 0px;
        left: 0px;
        width: 100%;
        height: 100%;
        display: block;
    }
    #overlay {
        background-color: yellow;
        position: fixed;
        top: 0px;
        left: 0px;
        width: 100%;
        height: 100%;
        opacity: 0.5;
        display: none;
    }
</style>

<script>
    var isDisplay = false;
    function toggle() {
      var src = document.getElementById("overlay");
      if (isDisplay) {
        src.style.display = "none";
        isDisplay = false;
      } else {
        src.style.display = "block";
        isDisplay = true;
      }
    }
</script>

</head>
<body>

<div id="src">
    <p>元画面</p>
    <input type="button" value="Open" onclick="toggle()" />
</div>

<div id="overlay">
    <br/>
    <p>オーバーレイ</p>
    <input type="button" value="Close" onclick="toggle()" />
</div>

</body>
</html>

うまくいかなかったコードのスクリプト部分が以下.

<script>
    function open() {
        var src = document.getElementById("overlay");
        src.style.display = "block";
    }
    function close() {
        var src = document.getElementById("overlay");
        src.style.display = "none";
    }
</script>

単純に「開く」,「閉じる」をしたかっただけなのだけれど.

HTMLとCSSもっとうまくなりたいなぁ