```

    fiscalYear is not defined at Object.<anonymous>
    
```

というエラーが出てしまいます。このエラーからfiscalYearが読み取れてないと思いました。JSが動いているかconsole.log("123");`で試してみたのですが、出力されないじょうたいです。下記に記載しましたJSの２つをつなげたいのですが、なぜ連動させられないのかがわかりません。教えていただきたいです。m(__)m

## Javascript

```

    $(function(){
        $('input[name="fiscal_year"]').on('change',function(){
            $('select[name="selectyearMonth"] option').remove();
            $('select[name="selectyearMonth"]').append($("<option></option>"));
            if($(this).val() != ""){ 
                for(i=4;i<=15;i++){
                    let m = (i<13)?i:(i-12);
                    m =('0' + m).slice(-2);
                    let y = (i<13)?$(this).val():parseInt($(this).val())+1;
                    let op =$("<option></option>",{
                value:y+m,
                          　html:y+"年"+m+"月"
                    });
                    $('select[name="selectyearMonth"]').append(op);
                }
            }
        });
    });
    
    
    function setSelect(){ console.log("123");
        var selectElement = document.getElementById("setSelect");
        for(var i = 1; i <= 12; i ++){
            var option = document.createElement("option");
            option.value = i;
            option.innerText = i;
            selectElement.appendChild(option);
        }
    }
    
```

## html

```

    <tr>
        <th>年度 / 年月</th>
        <td>
            <input name="fiscal_year" maxlength='4'> 年 
            <select name="selectyearMonth" style="width: 40%;" id="setSelect"></select> 月
            <script th:src="@{/js/year.js}"></script>
        </td>
    
```
CC BY-SA 4.0
2019-10-03T06:35:37.130
59430
2019-11-14T12:01:55.253
2019-10-11T07:58:34.620
19110
35696
question
javascript thymeleaf
Javascriptが動かない理由がわかりません
[Javascriptが呼ばれない理由がわからない](https://ja.stackoverflow.com/questions/59020/javascript%E3%81%8C%E5%91%BC%E3%81%B0%E3%82%8C%E3%81%AA%E3%81%84%E7%90%86%E7%94%B1%E3%81%8C%E3%82%8F%E3%81%8B%E3%82%89%E3%81%AA%E3%81%84/)

↑の記載に、さらに典型的なjsの呼び出し方を追記しました。参考ください。  
JavascriptとjQueryの文法を理解するのが、遠回りに見えて一番近道だと思います。

サンプル１、htmlの準備ができた時、1回だけ呼ばれる処理を書く書き方。

```

        window.onload = () => {
            // ...
        };
    
        // jQueryを利用しているなら、細かい差異はありますが、下記でもほぼ同じ意味になります。
        // ※　$()な部分は、jQueryの文法になります。
        $(function(){
              // ...
          }
        );
    
```

サンプル２、buttonを押したときに、対応するfunctionを呼び出す際の書き方です。

```

    <input type="button" value="4月" onclick="selectSlcMonth(4)">
    
```

以下典型サンプル

```

    <html>
    
    <head>
    </head>
    
    <body>
        <form method="POST">
            <select name="slcMonth" style="width: 40%;" id="slcMonth"></select>
            <input type="button" value="4月" onclick="selectSlcMonth(4)">
            <input type="button" value="5月" onclick="selectSlcMonth(5)">
        </form>
        <script>
            // ES2015
            window.onload = () => {
                initializeSlcMonth();
            };
    
            function initializeSlcMonth() {
                const selectElement = document.getElementById("slcMonth");
                for (let i = 1; i <= 12; i ++) {
                    const option = document.createElement("option");
                    option.value = i;
                    option.innerText = i + "月";
                    selectElement.appendChild(option);
                }
            }
    
            function selectSlcMonth(valMonth) {
                const selectElement = document.getElementById("slcMonth");
                selectElement.value = valMonth;
            }
        </script>
    </body>
    
```

※ 別件補足 name属性とvalue属性、class属性、id属性について

name属性とvalue属性は、  
inputやselectに使いSubmitすると、サーバーにその内容が送信されます。

class属性は、  
cssに対して使用するのが強く推奨されます。  
また、一部のjavascriptに対しても使用してもよいです。

id属性は、  
javascriptに対してのみ使用するのが強く推奨されます。  
（cssに対しては利用するのは現代では非推奨。）
CC BY-SA 4.0
2019-10-03T09:35:38.353
59432
2019-10-03T09:55:48.577
2019-10-03T09:55:48.577
25396
25396
59430
answer