javascript - jsコードはボディでは使用できますが、ヘッドでは使用できませんか?
伊谢尔伦
伊谢尔伦 2017-05-19 10:24:41
0
5
756

私はそれを別の js ファイルに書き、読み込みの問題を防ぐために window.onload=function(){} を使用しました
1. 本体からコードを直接挿入すると機能します;
2. コードの挿入からjs ファイルを本文に追加しても機能しません; ファイルから window.onload=function(){} を削除すると機能します;
3. ヘッドに記述した場合、コードを直接挿入してもファイルを直接挿入しても機能しません;
4. コンソールではエラーが報告されず、デバッガーで js ファイルが見つかります。
ページの読み込みに問題があると思いますが、具体的に何が問題なのかわかりません。 。 。
コードを投稿してください

リーリー

jsコードはこんな感じです

リーリー
伊谢尔伦
伊谢尔伦

小伙看你根骨奇佳,潜力无限,来学PHP伐。

全員に返信(5)
曾经蜡笔没有小新

まず最初に提案したいのは、ファイル名には漢字を含めないこと、また通常は数字で始めないことです。命名基準はたくさんありますので、自分で調べてください。

質問について:
控制台没报错且能在调试器中找到这个js文件:只要你使用了window.onload=function(){}、jsコードはheadに入れてもbodyに入れても、ファイル形式で導入しても必ず実行されます。

从body里插入js文件,不能用;文件中删掉window.onload=function(){},能用:html中的onclick="showPic(this)",这个showPic函数是定义在全局作用域下面的,不能用window.onload包裹,当你包裹的时候,showPic的作用域就处于onload这个函数里面了,在全局作用域下找不到showPic,所以点击时,showPic函数里面的代码没有执行、他の js コードが実行されると、a タグ、onclick などのコードが追加されています。

写在head里,无论直接插入代码还是文件,都不能用: dom クエリに関しては、dom ツリーがまだ構築されていないため、a タグをクエリすることはできません。 head に記述された DOM クエリ js コードは window.onload でラップする必要がありますが、正常に実行できるように showPic 関数を抽出してグローバル スコープに配置する必要があります。

@张东东 答えは正しいですが、彼は element.onclick バインディング イベント メソッド (コメントアウトしたコード) を使用しました。この時点で、showPic 関数はスコープ チェーン内にあるため、実行できます。

@stephenhuang onload で書かれた showPic コードは実行できますか?

いいねを押す +0
迷茫

スクリプトは本文の下に配置する必要があります

リーリー

最初に知っておくべきことは次のとおりです:

HTML ファイルはトップダウンで実行されますが、導入された CSS と JavaScript の順序は異なります。CSS が導入されて読み込まれると、プログラムは依然として下方向に実行され、<script> スクリプトが実行されると、スレッドは中断され、待機中です。 プログラムは、スクリプトの実行が完了した後にのみ実行を継続します。

そのため、オンラインでの議論のほとんどは、スクリプト スクリプトを <body> の後に配置することで、スクリプト スクリプトの実行時間が長くなって DOM の生成が遅延したりブロックされたりすることがなくなり、ページの読み込み速度が向上するというものです。 。

ただし、一部のページ効果の実装には、事前にいくつかの JS スクリプトを動的に読み込む必要があるため、すべてのスクリプトを本文の後に置くことはできません。したがって、これらのスクリプトは <body> の前に配置する必要があります。

ということで、スクリプト配置の原則は「ページエフェクト実装クラスのjsは本文の前に配置し、アクション、インタラクション、イベントドリブンのjsは本文の後に配置できる」ということになると思います。

いいねを押す +0
巴扎黑

これは、js タグが見つかったときに head に配置され、js がダウンロードされるためです。dom のレンダリングはまだ完了しておらず、この時点では js は dom 要素を取得できません。

いいねを押す +0
左手右手慢动作

まず、スクリプトはheadに配置することができ、多くのWebサイトがこの方法で使用しています。たとえば、ページを開いたときに、それが携帯電話かPC JSメソッドであるかを判断する必要があります。
次に、あなたの問題に応えて、少し変更を加えたので、テストを実行できるようになりました。 js部分のみが変更されており、html部分は変更されていません。

window.onload=function(){

リーリー

}

つまり、js コードが間違って書かれている可能性があります。

いいねを押す +0
phpcn_u1582

本当にありがとう、何が起こっているのかやっと理解できました!この提案は非常に有益だったので、受け入れました。
うっかり回答欄に書いてしまいましたが、せっかく書いたので、役に立つことを書いてコードを数行追加しましょう
Let lis[i].setAttribute('onclick','showPic(this);return false;' ); 次のように書くこともできます:

リーリー
いいねを押す +0
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート