Использование jQuery .length для определения количества объектов

0

Таким образом, у меня есть страница, содержимое которой создается с помощью объектов/прототипов JavaScript, и я пытаюсь использовать jQuery.length для поиска количества атрибутов имени, а затем результат отображается в таблице.

Вот пример объекта/прототипа - их 38, поэтому в идеале конечный код должен возвращать 38:

function Player (n, c, s, y, t) {
    this.name = n; 
    this.team = c;
    this.salary = s; 
    this.years = y;
    this.type = t;
}

var mwQB1 = new Player ("D. Brees", "NO", 31, 0, "FTE");    

Здесь функция, которая должна вычислять и публиковать результат в id = "teamStatsSize":

 $("document").ready(function () {
    var mwCalcRoster = function () {
    var mwRosterSize = $("prototype[name]").length;
    var mwElementRoster = document.createElement("p");
    mwElementRoster.innerHTML = mwRosterSize; 
    document.getElementById("teamStatsSize").appendChild(mwElementRoster);
} 
mwCalcRoster(); });

Код работает до такой степени, что он отправляет сообщение в нужном месте, он просто отправляет 0 вместо 38.

Спасибо за вашу помощь!!!

  • 0
    Убедитесь, что скрипт запущен после генерации контента.
  • 0
    Смотрите это: stackoverflow.com/questions/16976904/…
Показать ещё 1 комментарий
Теги:
arrays
attributes

1 ответ

1

Есть несколько проблем с тем, что у вас есть в настоящее время. Я не вижу вашу html-разметку, но я предполагаю, что вы хотите получить количество игроков внутри teamStatSize и обновить ее при добавлении новых игроков со счетом.

$("prototype[name]").length

Не уверен, что вы собираетесь здесь, но, возможно, подсчитываете количество прототипов игроков? Который я не думаю, будет работать должным образом, но вы близки. Вы можете подсчитать количество тегов абзаца в контейнере, если хотите.

Я попытался макет и пример для вас. Убедитесь, что эта функция запускается после того, как вы указали jQuery. Предпочтительно в нижней части страницы непосредственно перед телом, мы не нуждаемся в.ready, потому что все DOM будут загружены.

Некоторые HTML:

<div id="teamStatsSize">    
  <div id="count">Total Number of Players: <span>0</span></div>
</div>

Определите Контрактор игрока.

function Player (n, c, s, y, t) {
  this.name = n; 
  this.team = c;
  this.salary = s; 
  this.years = y;
  this.type = t; 
}

Затем мы делаем функцию self invoking, которая содержит пространства имен в ваших функциях и логике. Мы передаем jQuery как $, что делает jQuery доступным внутри объекта.

(function($){
    var app = {
        init: function() {
            this.addPlayer("Steve S", "CAR", 31, 0, "FTE");
            this.addPlayer("TO", "??", 31, 0, "FTE");
            this.addPlayer("Mike Vick", "JETS", 31, 0, "FTE");
            this.addPlayer("Eli Manning", "NY", 31, 0, "FTE");
        },
        mwCalcRoster: function(){
            var updateRosterSize = app.mwRosterSize();
        },
        players: [],
        addPlayer: function(n, c, s, y, t) {
            var $container = $('#teamStatsSize');

            // Create the player, add to a player array. 
            var playername = new Player (n, c, s, y, t);

            // Push the new player to an array. 
            app.players.push(playername);

            $container.append('<p>Name: '+playername.name+', Salary: '+playername.salary+', Team: '+playername.team+', Years: '+playername.years+', Type: '+playername.type+'</p>');

            // Update the Player Count
            app.updateRosterSize();

        },
        mwRosterSize: function() {
            return this.players.length || 0;
        },
        updateRosterSize: function() {
            var size = this.mwRosterSize();
            $('#count span').html(size);
        }

    }
    // Expose "app" object to the window. 
    window.app = app;
}(jQuery));

Теперь у нас есть объект "app" в окне, и мы можем назвать его так. Идем дальше, если вы перейдете на консоль в devtools/firebug и введите "приложение", вы увидите наш объект.

app.init(); // This will add the 4 players we create inside the init function. 

app.mwRosterSize(); // Returns 4, which is the length of the app.players array. 

app.addPlayer("New Guy", "NY", 31, 0, "FTE"); // Add new player. 

Есть буквально сотни способов сделать это. Надеюсь, это помогло вам.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню