我正在为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
由于
答案 0 :(得分:0)
它说你在未定义的值上调用getAttribute,即xbooks[i]
未定义。
这可能表示您没有从您正在联系的服务器返回预期结果。您应该准确检查回来的内容,以及xbooks
和/或其元素的确切内容。
答案 1 :(得分:0)
您期望xlocalestatus和xbooks具有相同的长度。可能这两个阵列的实际长度是不同的。假设第一个是10,第二个是8.现在当您访问xbooks [9]时,您将收到此错误,并且xbooks [9]未定义。