使用getAttribute时出错,为什么?

时间:2011-03-14 17:12:28

标签: android xml mobile appcelerator

我正在为Android应用程序使用Appcelerator Titanium,下面的代码在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 :(得分:0)

它说你在未定义的值上调用getAttribute,即xbooks[i]未定义。

这可能表示您没有从您正在联系的服务器返回预期结果。您应该准确检查回来的内容,以及xbooks和/或其元素的确切内容。

答案 1 :(得分:0)

您期望xlocalestatus和xbooks具有相同的长度。可能这两个阵列的实际长度是不同的。假设第一个是10,第二个是8.现在当您访问xbooks [9]时,您将收到此错误,并且xbooks [9]未定义。