

練習でスタートボタンを押すと、３，２，１でじゃんけんが出るように書いたのですがエラーが出ます。`Uncaught SyntaxError: missing
) after argument
list`がでていろいろ試したのですが解決しませんでした。根本的におかしなことをしているかもわかりませんがご教示お願いいたします。

[code]

    <script>
                 "use strict";
    
                 var gyanken =["✊","✌","✋"];
                 var i=3;
                 document.getElementById("start").getElementById("moniter").addEventListener("click", function(){ function show(){
                           moniter.innerHTML=(i--);
                           var time = setTimeout(function() {
                             show();
                           }, 1000);
                           if(i<0){
                              clearTimeout(time);
                            //  start.addEventListener("click", function(){
                              var result = Math.floor(Math.random()*3);
                              moniter.innerHTML= gyanken[result];
                           }}}
                           show();)
    </script>
    
[/code]


CC BY-SA 3.0
2017-03-27T11:47:35.833
33578
2017-03-28T04:45:54.453
2017-03-27T11:59:49.377
21220
question
javascript
JSの練習でスタートボタンを押すと、３，２，１でじゃんけんが出るように書いたのですがエラーが出ます。


インデントをかけて整形すれば見やすくなってミスに気づくかもしれないです。

[code]

    <script>
        "use strict";
    
        var gyanken =["✊","✌","✋"];
        var i=3;
        document.getElementById("start").getElementById("moniter").addEventListener(
            "click", 
            function(){
                function show(){
                    moniter.innerHTML=(i--);
                    var time = setTimeout(
                                            function() {show();}, 
                                            1000
                                        );
                    if(i<0){
                        clearTimeout(time);
                        //  start.addEventListener("click", function(){
                        var result = Math.floor(Math.random()*3);
                        moniter.innerHTML= gyanken[result];
                    }
                }
            }
            show();
        );
    </script>
    
[/code]

`addEventListerner`の引数がおかしいのに気づきましたでしょうか？  
`Uncaught SyntaxError`：基本的のこのエラーは構文エラーの際に表示されます。  
`missing ) after argument list`：引数リストの後ろに`)`閉じが無いって怒られてます

気になる点はありますが、とりあえずイベントに食わせている無名関数内で  
関数宣言と実行を行えば動くのではないでしょうか？

[code]

    document.getElementById("start").getElementById("moniter").addEventListener(
        "click", 
        function(){
            function show(){
                moniter.innerHTML=(i--);
                var time = setTimeout(
                                        function() {show();}, 
                                        1000
                                    );
                if(i<0){
                    clearTimeout(time);
                    //  start.addEventListener("click", function(){
                    var result = Math.floor(Math.random()*3);
                    moniter.innerHTML= gyanken[result];
                }
            }
            show();
        }
    );
    
[/code]

* * *

動作するコードを追記しました。参考にしてください。

[code]

    //グローバル変数
    var gyanken =["✊","✌","✋"];
    var sec=3;
    var time = null;
    
    //クリックイベントをバインド(onloadなど初期化関数に入れても良い)
    document.getElementById("monitor").addEventListener(
        "click", 
        function(){
            //クリック時初期化
            sec=3;
            if(null!=time){ clearTimeout(time); }
            time=null;
            //表示開始
            show(); 
        }
    );
    
    /**
     * 表示処理関数
     */
    function show(){
        //再起処理の最後にムダ処理するのでIFで切り分け
        if(0<=--sec){
            //表示更新
            monitor.innerHTML=sec+1;
            //1秒後再起
            time = setTimeout(
                                  function() {show();}, 
                                  1000
                              );
        }else{
            //タイマーが存在した場合、破棄
            if(null!=time){ clearTimeout(time); }
            //タイマー変数初期化
            time=null;
    
            //乱数生成
            var result = Math.floor(Math.random()*3);
            //結果表示
            monitor.innerHTML= gyanken[result];
        }
    }
[/code]

[code]

    #monitor {
      background-color:#d0f0f0;
      width:180px;
      height:120px;
      cursor:pointer;
    }
[/code]

[code]

    <div id="monitor"></div>
[/code]


CC BY-SA 3.0
2017-03-27T12:18:23.660
33579
2017-03-28T04:45:54.453
2017-03-28T04:45:54.453
33578
answer