問題は、アラート方法を使用していることです。
私が言いたいのは、コードスニペットから、そしてアラートを使用して、失敗点がどこにあるかを判断するのは非常に難しいということです。
ただし、このような問題を明確にする別の方法があります。それが私の推奨事項です。これはJavaScriptステップデバッガーです。
ChromeまたはFireFoxでは、コードの行をステップ実行し、各行の値を調べて、期待どおりかどうかを判断することができます。
Chromeでのステップデバッグの手順:1。このようにデバッガキーワードを追加し、アラートをコメントアウトします。
//WORKS!
debugger;
var url = window.location;
//alert(url);
- This will instruct the debugger to pause runtime execution, so that we can see how each line executes.
ウェブページにChromeが表示されている状態で、画面を右クリックして[要素の検査]を選択します。
- これにより、Dev Toolsが開き、デバッガーが停止します。
ページを更新し、コードの実行に必要となる可能性のあるイベントを呼び出します。
- コードの実行はデバッガー行で一時停止する必要があります。
今、あなたができることは本当に強力です。ステップオーバーボタンをクリックすると、1行ずつ移動します。
- これで、変数にカーソルを合わせると、状態が何であるかを確認できます。
私の疑惑は、url.split()がおそらく何らかの形で間違っているということです。
だから私がしたことは、場所のメンバーを調べることでした:ホスト、ホスト名、href、オリジン、パス名...
必要に応じて、そのうちの1つを分割する必要があると思います。
例えば:
var url = window.location
var url_parts = url.href.split('/');
//この投稿のurl_partsは//["http:"、 ""、 "stackoverflow.com"、 "questions"、 "10987267"、 "why-can-i-only-run-1-javascript-internal-function "]
お役に立てば幸いです。ではごきげんよう!ナッシュ