JavaScript не определена ошибка, но оповещение toSource показывает, что объект существует - PullRequest
0 голосов
/ 30 ноября 2009

Я взял немного кода для подкачки страниц с помощью jQuery, через Лука Маттеис здесь Просмотр записей с помощью jQuery

Я внес некоторые изменения в скрипт подкачки, чтобы я мог использовать один и тот же код для подкачки разного контента в разных местах на одном сайте.

По большей части, я думаю, что это работает, за исключением того, что я получаю jsonObj - неопределенная ошибка в firebug. Когда я использую alert (jsonObj.toSource ()), мне показывают переменные, которые я пытаюсь заполнить, но в то же время сценарий умирает из-за ошибки. Я не могу понять, почему я получаю этот конфликт «неопределенный», и все же я легко могу поместить «неопределенные» значения в предупреждение. Я даже могу сказать alert (jsonObj.name), и он даст мне это значение, но все равно запустить jsonObj - неопределенная ошибка.

Вот код, который я использую

var pagedContent = {
data: null
,holder: null
,currentIndex : 0
,init: function(data, holder) {
    this.data = data;
    this.holder=holder;
    this.show(0); // show last
}
,show: function(index) {
    var jsonObj = this.data[index];
    if(!jsonObj) {
        return;
    }
    var holdSubset='';
    for(i=0;i<=4; i++){
    jsonObj=this.data[index+i];
    this.currentIndex = index;
    if(this.holder=='div#firstList'){
    var returnedId = jsonObj.id;
    var returnedName = jsonObj.name;
    var calcScore=this.data[index+i].score/this.data[0].score*100;
    var resultInput="<div ' id='"+returnedId+"'><div class='name'>"+returnedName+"</div><div class='score'><div style='width:"+calcScore+"%;'></div></div>";
    } 
    if(this.holder=='div#secondList'){
    var name=jsonObj.name;
    var city=jsonObj.city;
    var region=jsonObj.state;
    var resultInput='<li><div>'+name+'</div<div>'+city+'</div><div>'+region+'</div></li>';
    }
    holdSubset= holdSubset+resultInput;
    }

    jQuery(this.holder).html('<br/>'+holdSubset);

  if(index!=0){
    var previous = jQuery("<a>").attr("href","#").click(this.previousHandler).text("< previous");
   jQuery(this.holder).append(previous);
   }

    if(index+i<this.data.length){
     var next = jQuery("<a style='float:right;'>").attr("href","#").click(this.nextHandler).text("next >");
    jQuery(this.holder).append(next);
    }
}
,nextHandler: function() {
    pagedContent.show(pagedContent.currentIndex + 5);
    return false;
}
,previousHandler: function() {
    pagedContent.show(pagedContent.currentIndex - 5);
    return false
}
};

Я вызываю функцию вот так

pagedContent.init(json.users.locations, 'div#secondList');

JSON выглядит так

{"locations" : [ {"id":"21319","name":"Naugatuck American Legion","city":"Ansonia","region":"Connecticut"},{"id":"26614","name":"Studio B789","city":"Acton","region":"Maine"},{"id":"26674","name":"Deering Grange Hall","city":"Bailey Island","region":"Maine"},{"id":"27554","name":"Accu Billiards","city":"Acushnet","region":"Massachusetts"}]}

Ответы [ 2 ]

1 голос
/ 30 ноября 2009

Возможно, я обнаружил проблему с вашим кодом:

for(i=0;i<=4; i++){
    jsonObj=this.data[index+i];
    (...)

Когда вы вызываете show (0), вы устанавливаете index на 0. Вы ожидаете фиксированное количество элементов в массиве (5 в диапазоне [0..4]), но в ваших данных только 4 местоположения.

0 голосов
/ 30 ноября 2009

Если вы используете console.log для отслеживания проблем в firebug, вы можете обнаружить, что это проблема с firebug. Попробуйте просто запустить console.log самостоятельно.

Если это проблема с firebug, попробуйте обновить его. Существует несколько версий разработки, которые могут решить эту проблему.

У меня была похожая проблема, и я исправил ее, выполнив вышеуказанное.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...