検索

ホームページ  >  に質問  >  本文

javascript - jsコードはボディでは使用できますが、ヘッドでは使用できませんか?

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

リーリー

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

リーリー
伊谢尔伦伊谢尔伦2794日前768

全員に返信(5)返信します

  • 曾经蜡笔没有小新

    曾经蜡笔没有小新2017-05-19 10:26:41

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

    質問について:
    控制台没报错且能在调试器中找到这个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
  • 迷茫

    迷茫2017-05-19 10:26:41

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

    リーリー

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

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

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

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

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

    返事
    0
  • 巴扎黑

    巴扎黑2017-05-19 10:26:41

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

    返事
    0
  • ringa_lee

    ringa_lee2017-05-19 10:26:41

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

    window.onload=function(){

    リーリー

    }

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

    返事
    0
  • phpcn_u1582

    phpcn_u15822017-05-19 10:26:41

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

    リーリー

    返事
    0
  • キャンセル返事