39311


標題の件、問題の関数inicheck();はHEADタグ内で記述するjs/entry.jsの中にfunctionとして記述しています。
画面を開いてonclick属性を仕掛けたボタンを押下しても、無反応となってしまいます。  
ブラウザの開発ツールを開くと、案の定 定義されていませんというエラーになっていました。

[![画像の説明をここに入力](https://i.stack.imgur.com/XhZHk.png)](https://i.stack.imgur.com/XhZHk.png)

# 質問：

onclick属性で定義した関数を、外部ファイルに書くことはできないのでしょうか？inicheckという関数を動作させるための対策をご教示ください。

[code]

    -HTML-
     
    
       <head>
        <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
        <title>申請画面</title>
        <link rel="stylesheet" type="text/css" href="css/entry_style.css">
        <script type="text/javascript" src="js/entry.js"></script>
        </head>
    
        <body>
        <form method="get" action="">
                <div  class="ctrl">
                <button type="button" class="iabtn" onClick="inicheck();">確認</button>
    
        以下HTML省略
    
    
    
    -js/entry.js-
    
    $(function() {
    
        //テキストボックスへフォーカスあてる。
        $("input[type=text]").eq(1).focus();
    
        //カレンダ表示。
        $("#calendar").datepicker({minDate: "0d", maxDate: "+30d"});
    
        //日付枠は入力できないようにする。
        $("#calendar").keydown(function(event){
            return false;
        });
    
    
        //　省略
    
    
        //****【これが作用しない】****
        function inicheck () {
            alert("今夜が山田");
        }
    
    });
    
[/code]


CC BY-SA 3.0
2017-11-05T12:07:06.993
39310
2017-11-05T12:15:15.033
2020-06-17T08:14:45.997
-1
25696
question
javascript html jquery
button要素のonclick属性に仕掛けた関数が未定義となり起動できない


inicheckという関数がグローバルスコープに定義されていないからです。  
jQueryを使っているならjQueryのイベントハンドラを使用した方が  
自然だと思いますが、何を理解できていないのか理解するために修正するなら

[code]

    $(function() {
        //テキストボックスへフォーカスあてる。
        $("input[type=text]").eq(1).focus();
        //　省略
    });
    
    function inicheck () {
        alert("今夜が山田");
    }
    
[/code]

という感じで関数をjQueryのハンドラの外に定義してみてください。


CC BY-SA 3.0
2017-11-05T12:15:15.033
39311
2017-11-05T12:15:15.033
4388
39310
answer