2013-03-31 4 views
2

Это функция, которая извлекает результаты из Bing и заполняет массив объектов.Продолжайте получать NaN вместо 0

callBing: function (query, callback) { 
    var url = 'http://localhost/meta/public/bing/'+query ; 
    $.getJSON(url, function(data) { 
     total_bing = data.d.results[0].WebTotal; 
     var j = 0 ; 
     $.each(data.d.results[0].Web, function() { 
      var obj = new res(j+1, this.Title, this.Description, this.Url, 0) ; 
      b.push(obj) ; 
      j=j+1 ; 
     }); 
     console.log(b); 
     callback(b, total_bing); 
    }); 
}, 

И это конструктор для объектов Реза

function res(id,title,desc,url,score) 
{ 
    this.id=id; 
    this.title=title; 
    this.desc=desc; 
    this.url=url; 
    this.score=score; 
    this.changeRankScore=changeRankScore; 
    function changeRankScore(Rankscore) 
    { 
     this.score=Rankscore; 
     return Rankscore; 
    } 


} 

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

Оценка объектов результатов - последний параметр в конструкторе, который равен 0, но отображается как NaN в консоли.

Вот скриншот enter image description here

+0

ли вы не называйте вашу функцию changeRankScore где-нибудь? Например, без аргументов. –

+2

вы можете получить '' 0 "' вместо '0' конвертировать кулак в тип int. –

+2

Обратите внимание, что в консоли Chrome, когда вы открываете объект, вы видите его в текущем состоянии, а не в состоянии при вызове 'console.log', то есть' callback (b, total_bing); 'может быть виновником. – freakish

ответ

0

Как @freakish сказал, что это возможно, что score было изменено после вызова console.log, но console.log произошло, чтобы показать измененное значение.

Вы можете попробовать console.log(b[0].score) до и после callback

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