2016-11-23 4 views
-1

Hy、 私はいくつかのセクションから作られた簡単な1ページのウェブサイトを持っています。 htmlファイルの中にスクリプトを書くと、正しくセクション数が得られます。コードはこれです:HTMLファイル内のセクション数を数える

var number = $("#sections li").length 
console.log(number); 

しかし、私は外側のファイルから完全に同じコードを実行すると動作しません。

アイデア?

+0

のためのjQueryの省略形です

$(function() { var number = $("#sections li").length console.log(number); }); 

私の最高の推測では、DOMの準備ができる前に、これを試して、あなたのコード実行です。 – DaniP

+1

これをトラブルシューティングするための情報が不十分です。なぜそれが動作していないか、何が起きているかの説明(あなたのコンソールのエラー?)を判断するための例を見なければなりません。 –

+0

jqueryが含まれていますが、jsファイルには含まれていませんが、htmlには含まれています。エラーはありません; –

答えて

2

考えられる理由:

    HTMLのすべてが完全に
  • あなたのCSSセレクタをロードされていると、コードが実際に<section>要素があるどのように多くを教えてくれていない前に、あなたのJavaScriptが実行されていることができ
  • 、それ<foo id="sections">の下に何個の<li>要素が存在するのか、これは意図的なものですか?
  • あなたのコードは、jQueryが使用できないコンテキストで実行されています。また、jQueryで価値のあるものを使用しているわけではありません。

あなたのコードでは、昔ながらのJavaScriptを使用することによって、よりポータブル(かつ迅速)のようになります。

var count = document.getElementById("sections").getElementsByTagName("li").length; 

または(わずかに少ないポータブル:近代的なブラウザが必要です):

具体的
var count = document.querySelectorAll("#sections li").length; 

window.addEventListener('DOMContentLoaded', function(e) { 

    var count = document.querySelectorAll("#sections li").length; 
    console.log(count); 
}); 
+0

大変ありがとうございました! Unfortunatelly私はまだjsをよく知るようになっています。 –

+0

[やや携帯性が低い](http://caniuse.com/#search=queryselectorall)? @ * sigh * _... – canon

+0

@canon IE6/7IE8は、世界のいくつかの部分で依然として重大な用途があります。 – Dai

0

jQueryライブラリi含まれ、ページ内で実行されるすべてのファイルも含まれていれば、それが機能しない理由はありません。あなたのファイル構造がどのようにレイアウトされているか、メインのJavaScriptファイルが書かれているのを見ることなく、なぜそれが失敗しているのかを具体的に述べるのは難しいです。あなたが受け取っているエラーが何であるかを知るのにも役立ちます。 $(function() { });は、ファイルライブラリを含める必要があるので、jQueryの$(document).ready(function() { });

関連する問題