2016-11-23 4 views
-1

Hy, У меня есть простой сайт на одну страницу, состоящий из нескольких разделов. Когда я пишу скрипт внутри html-файла, он правильно дает мне количество разделов. Код:Подсчет количества разделов в файле HTML

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

Но когда я запускаю тот же самый код из внешнего файла, он не работает.

Любые идеи?

+0

Это JQuery так что вам нужно, чтобы включить библиотеку файлов. – DaniP

+1

Недостаточно информации для устранения этой проблемы. Вам нужно будет увидеть пример, чтобы определить, почему он не работает, или объяснение того, что происходит (любые ошибки в консоли?). –

+0

JQuery включен, только не в js-файле, а в html; ошибок нет;) –

ответ

2

Возможные причины:

  • Ваш JavaScript может быть выполняется, прежде чем все HTML были полностью загружен
  • Вашего селектора CSS и код на самом деле не сказать вам, сколько <section> элементов есть, это рассказывает, сколько <li> элементов существует под <foo id="sections">, является ли это намеренным?
  • Ваш код выполняется в контексте, где 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

Спасибо вам большое за помощь! К несчастью, я все еще лучше знаю js. –

+0

[Чуть менее портативный] (http://caniuse.com/#search=queryselectorall)? _ * sigh * _... – canon

+0

@canon IE6/7IE8 все еще имеет значительное применение в некоторых частях мира. – Dai

0

Предполагая, что библиотека jQuery i включая все файлы, которые должны быть запущены на странице, также нет причин, по которым это не сработает. Не видя, как выкладывается ваша файловая структура или написан ваш основной файл JavaScript, трудно сказать, почему именно он терпит неудачу. Это также поможет узнать, что такое ошибка, которую вы получаете.

Моя догадка ваш выполнение кода перед дом готов, попробуйте следующее:

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

Где $(function() { }); является JQuery стенография для $(document).ready(function() { });

Смежные вопросы