htmlページ jsファイル内の関数呼び出しエラー onclickは処理方法が定義されていません。
今日、htmlタグでonclick関数を扱うと、必ずエラーが報告されます。Uncaught ReferenceError: dosave is not defined(...)
しばらく探しても何が悪いのかわからなかったのですが、ようやく書き方が間違っていたことがわかり、正しい書き方は次のようになります。
htmlを使用します。
<input type="button" value="Login Now" onclick="dosave();"/>
jsです。
dosave = function (){
alert("Success! ");
}
エラーの書き方は、一般的に2つの致命的なものがあります。
function dosave(){
alert("An error will be reported!!! ");
}
そして
var dosave = function (){
alert("An error will be reported!!! ");
}
なぜそうなのか、それは。
htmlページはjsファイル内の関数を呼び出すので、dosave = function (){}という形で書く必要があり、それ以外の書き方ではhtmlページが関数を検索してくれません。
<スパン ------------------------------------------------------------------ split line ------------------------------------------------------------- ---
上記は2016年11月11日のブログの元記事で、3年間とても話題になり、多くの仲間を助けたり、突き放したりしてきました。皆さんからの反応に感謝しつつ、参考になればと思い、コメントをまとめておきます。
1. これは特異な問題です。普段はvar dosave = function(){}とfunction dosave(){}を問題なく使っているのに、ある日突然動かなくなる学生が多く、当時の私もそうでした。また、HBuidlderでは問題なく動いているのに、eclipseに切り替えると動かなくなる学生もいます。
2. 関数の定義方法は、スコープが異なることを除けば、3つとも正しい。
3. var dosave = function(){}とfunction dosave(){}は同等であり、最も一般的な関数定義の方法であることが分かっています。違いは、function dosave(){}は宣言的に上げることができるのに対し、var dosave = function(){}は使う前に定義しなければならないことです。
4. dosave = function(){}の書き方は、dosave関数をグローバルスコープ関数として扱い、windowsオブジェクトを自分のスコープと同等に扱いますので、呼び出すことが可能です。
5. クラスメートが解決策を教えてくれましたが、当時は$(functiong{ })を使っていなかったので、私の場合うまくいきませんでした:。
1) funcationメソッド名() {}でメソッドを定義する。, このように書いても問題はないのですが、jsの$(functiong{ })の中にメソッドを書いてはいけません、メソッドの中にメソッドがあるのと同じなので、見つけることができません。
2) $().ready(function () {});の外側にメソッドを入れたら、ちゃんと実行されるようになりました。
6. これら3つの定義関数を記述して試してみると、不可解なエラーに遭遇したとき、アイデアの提供という意味で、お役に立てるかもしれません。
また、綿密な調査と返信をありがとうございました。さらに質問を返信していただければ、より良い回答を提供できるよう、この問題のフォローアップを続けます。ありがとうございました。
関連
-
fetch ネットワークリクエストラッパーの説明例
-
vueにおけるfilterの適用シーンについて解説します。
-
vueのプロジェクトでモックを使用する方法を知っていますか?
-
[解決済み】Node.js getaddrinfo ENOTFOUND
-
[解決済み] 配列の結合時に未定義のプロパティ 'push' を読み込むことができない
-
[解決済み】React - TypeError: 未定義のプロパティ 'props' を読み取ることができない。
-
HTML5 LocalStorage ローカルストレージとセッションストレージの使用法
-
ノード作成時のJavaScriptエラー: xxx.appendChild は関数ではありません。
-
javascript のロケーションエラーにより、Uncaught TypeError が発生しました。nullのプロパティ'elements'を読み取ることができません
-
Netflix スペースマンダイヤルのJavaScriptによる実装
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
JavaScriptにおけるマクロタスクとミクロタスクの詳細
-
WeChatアプレット用ユニアプリによるグローバルシェアリング
-
vue for 登録ページ効果 vue for sms 認証コードログイン
-
vueのグローバルがscss(mixin)を導入。
-
Javascript Bootstrapのグリッドシステム、ナビゲーションバー、ローテーションの説明
-
Vueの一般的な組み込みディレクティブの説明
-
[解決済み】Node.js Error: Cannot find module express
-
[解決済み】(Google Map API) Geocodeは以下の理由で成功しませんでした。REQUEST_DENIED
-
[解決済み】React Uncaught Error: 対象コンテナが DOM 要素でない [重複]。
-
jq は html ページとデータを動的に分割する。