1

重複の可能性:
JavaScript の「キャッチされていない TypeError: オブジェクトは関数ではありません」

私の完全なjsファイルはこれです:

function addInning() {
    alert("hello");
}

私のhtmlファイルには要素があります <input name="addInning" type="button" value="Add Inning" id="addInning" onclick="addInning();">

コードは実行されません。私の人生では、これは可能な限り最も単純なことであるため、その理由を理解することはできません. クロムからのエラーは「Uncaught TypeError: object is not a function」です。stackoverflow で検索しましたが、投稿された解決策は役に立ちませんでした。私は私の心を失っているように感じます。

完全なコードはこちら: http://jsfiddle.net/BUsPC/

4

3 に答える 3

3

問題は、 inonclick="addInning();"が要素addInningを参照していることです。これは、および属性に設定された値だからです。タグが要素の子である場合にのみ、この動作が促されるようです。inputnameidinputform

このDEMOは、その動作を強調しています。

問題を解決するには、 と の両方の名前を変更するか、 の名前を変更します。また、次のようにグローバル関数を明示的に参照することもできます。inputidnameaddInning

onclick="window.addInning();"

後者のオプションを使用して、作業中のフィドルを見てください。window.onloadデフォルトですべての JS をイベントにラップするため、JSFiddle には注意してください。addInning次のように定義することで、デフォルトの動作を維持できます。

window.addInning = function () {
    alert("hello");
}​;​

私は何か新しいことを学びました!

于 2012-08-10T19:08:22.620 に答える
2

名前と ID を「addInning」から別のものに変更します。これは私にとってはうまくいきました。

<script type="text/javascript">
    function addInning()
    {
        alert("hello");
    }

</script>
<input name="addInning2" type="button" value="Add Inning" id="addInning2" onclick="addInning();">
于 2012-08-10T19:07:37.053 に答える
0

関数なので、何かを返してみてください:

function addInning() {
   alert("hello");
   return true;  // or return false; to prevent the click
}
于 2012-08-10T19:01:25.830 に答える