Ошибка при использовании getAttribute, почему? - PullRequest
0 голосов
/ 14 марта 2011

Я использую Appcelerator Titanium для приложения для Android, и приведенный ниже код генерирует ошибку в эмуляторе Android, не уверен, что это мой Javascript ИЛИ что-то в Appcelerator.

По какой-то причине он возражает против getAttribute и выдает следующую ошибку:

TypeError: Невозможно вызвать метод "getAttribute" из неопределенного (app: //pages/xml.js#12)

(это может быть не строка # 12 ниже из-за форматирования !! Thx)

Может кто-нибудь пролить свет на то, почему getAttribute вызывает проблему?

Вот код:

// BEGIN SAMPLE CODE

var xhr = Titanium.Network.createHTTPClient();

xhr.onload = function() 
   { 
      var xmlDoc = this.responseXML.documentElement;
      var xlocalestatus=xmlDoc.getElementsByTagName('Locations');
      var xbooks=xmlDoc.getElementsByTagName('Books');
      var newname = '';

      for (i=0;i<xlocalestatus.length;i++) 
         { 
          newname = xbooks[i].getAttribute('Name');
          Ti.API.info(newname);
         }
   };

// open the client

xhr.open('GET','http://myurl.com');

// send the data

xhr.send();


// END SAMPLE CODE

Код также доступен на Pastie: здесь http://pastie.org/1670908

Спасибо

Ответы [ 2 ]

0 голосов
/ 13 мая 2011

Вы ожидаете, что xlocalestatus и xbooks имеют одинаковую длину.Вероятно, фактическая длина этих двух массивов различна.Скажем, первое имеет 10, а второе 8. Теперь, когда вы получаете доступ к xbooks [9], вы получите эту ошибку, а xbooks [9] не определена.

0 голосов
/ 14 марта 2011

Это говорит о том, что вы вызываете getAttribute для неопределенного значения, то есть xbooks[i] не определено.

Это, вероятно, означает, что вы не получаете ожидаемый результат, возвращаемый с сервера, с которым вы связываетесь,Вы должны точно проверить, что возвращается, и что именно задается xbooks и / или его элементам.

...