ホームページ >ウェブフロントエンド >jsチュートリアル >私の JavaScript コードはローカルでは動作するのに、JSfiddle.net では動作しないのはなぜですか?

私の JavaScript コードはローカルでは動作するのに、JSfiddle.net では動作しないのはなぜですか?

Barbara Streisand
Barbara Streisandオリジナル
2024-10-31 21:55:02569ブラウズ

Why Does My JavaScript Code Work Locally But Not on JSfiddle.net?

JavaScript が JSfiddle.net で実行されない

問題:

提供されたコードはライブ サイトでは正しく機能しますが、失敗しますJSfiddle.net で実行すると、「ReferenceError: fillList is not generated」や「ReferenceError: mySelectList is not generated」などのコンソール エラーが発生します。

説明:

指定されたコードでは、関数は onload 関数内で定義されています。これにより、その関数内で関数を参照できるようになりますが、グローバルにアクセスすることはできません。その結果、グローバル名 (fillList() や mySelectList など) を使用して HTML からこれらの関数を参照すると、JSfiddle はそれらを認識できません。

解決策:

この問題には 3 つの主な解決策があります:

a) 関数のグローバル化:

<code class="javascript">window.fillList = function() {};
window.mySelectList = function() {};</code>

このアプローチは関数をグローバルにしますが、関数を汚染するため理想的ではありません。グローバル名前空間。

b) 控えめな JavaScript を使用します:

onload 関数の外側で関数を定義し、JavaScript のみを使用してイベント リスナーをアタッチします:

<code class="javascript">function fillList() {}
function mySelectList() {}

window.onload = function() {
  var e = document.getElementById('elementId');
  e.addEventListener('click', fillList);
};</code>

HTML と JavaScript をこのように分離することはベスト プラクティスです。

c) JSfiddle 設定を変更します:

JSfiddle 設定を「No Wrap (head or body)」に変更します。コードが onload 関数にラップされるのを防ぎます。これにより、関数にグローバルにアクセスできるようになります。

以上が私の JavaScript コードはローカルでは動作するのに、JSfiddle.net では動作しないのはなぜですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。