Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/414.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript for循环在某些迭代中随机崩溃_Javascript_Xml_Arrays_For Loop_Titanium - Fatal编程技术网

Javascript for循环在某些迭代中随机崩溃

Javascript for循环在某些迭代中随机崩溃,javascript,xml,arrays,for-loop,titanium,Javascript,Xml,Arrays,For Loop,Titanium,一定有人能发现我的错误!我正在解析一个xml提要并运行一个循环以获取页面上的某些项目: www.highlandradio.com/feed/ 我在设置变量mp3Test的行中遇到错误。我所要做的就是将其设置为enclosure标记的url属性(如果存在)。这就是为什么我要包括测试,以检查每个项目是否有一个附件标记,如果有,我将其设置为等于url标记,但如果没有,我现在将其设置为等于'null.mp3'。当运行循环时,我得到了一定数量的正确数字,然后在循环的某些迭代中,我崩溃了。我正在使用钛合

一定有人能发现我的错误!我正在解析一个xml提要并运行一个循环以获取页面上的某些项目:

www.highlandradio.com/feed/
我在设置变量mp3Test的行中遇到错误。我所要做的就是将其设置为enclosure标记的url属性(如果存在)。这就是为什么我要包括测试,以检查每个项目是否有一个附件标记,如果有,我将其设置为等于url标记,但如果没有,我现在将其设置为等于'null.mp3'。当运行循环时,我得到了一定数量的正确数字,然后在循环的某些迭代中,我崩溃了。我正在使用钛合金,因此没有收到任何正确的错误消息。它只是突出显示了我设置mp3Test的那一行,并表示要调试当前的指令指针。我快疯了。请帮忙

var url="http://www.highlandradio.com/feed/"; 

var xhr = Titanium.Network.createHTTPClient();

xhr.onload = function() {
    // Data is returned from the blog, start parsing
    var doc = this.responseXML.documentElement;    

    // begin looping through blog posts
    var items = doc.getElementsByTagName("item");

    var enclosure = doc.getElementsByTagName("enclosure");
    console.log("NEWEST Enclosure Length -----------"+enclosure.length);

    for (var i = 0; i < items.length; i++) {        

        var itemsEnclosureLength=items.item(i).getElementsByTagName("enclosure").length;
        var itemsEnclosureExists=items.item(i).getElementsByTagName("enclosure");
        console.log("EXISTs ----------------------------------"+ itemsEnclosureExists);
        console.log("Newest ENCLOSURE LENGTH ---------------------- [ "+i+ " ]" + itemsEnclosureLength);

        var str=items.item(i).getElementsByTagName("content:encoded").item(0).text;
        console.log("STRING TEST "+ str);

        var patt1=/([a-z\-_0-9\/\:\.]*\.(jpg|jpeg|png|gif))/i;

        var urlMatch = str.match(patt1);
        console.log("MATCHES TESTER -----------------------------------" + typeof urlMatch);

        data.push({

            title: items.item(i).getElementsByTagName("title").item(0).text,            
            leftImage: str.match(patt1) !== null ? str.match(patt1)[0] : 'image_news.png',
            dataToPass: items.item(i).getElementsByTagName("description").item(0).text,
            mp3Test: itemsEnclosureLength > 0 ? items.item(i).getElementsByTagName("enclosure").item(i).getAttribute("url"):'NULL.MP3'
        });
        console.log("Check this --------------------------"+ mp3Test);



    }
var url=”http://www.highlandradio.com/feed/"; 
var xhr=Titanium.Network.createHTTPClient();
xhr.onload=函数(){
//从博客返回数据后,开始解析
var doc=this.responseXML.documentElement;
//开始循环浏览博客文章
var items=doc.getElementsByTagName(“item”);
var enclosure=doc.getElementsByTagName(“附件”);
console.log(“最新存储模块长度------------”+存储模块.Length);
对于(var i=0;i0?items.items(i).getElementsByTagName(“附件”).item(i).getAttribute(“url”):'NULL.MP3'
});
console.log(“检查此-----------------------------------------”+mp3Test);
}

BUMP2

问题是我使用了两个值相同的计数器!愚蠢的错误,但……以下是解决方案:

var itemsEnclosureLength=items.item(i).getElementsByTagName("enclosure").length;
var itemsEnclosureExists=items.item(i).getElementsByTagName("enclosure");

if (itemsEnclosureExists){ 

     for (n=0; n<itemsEnclosureLength; n++){
         mp3=items.item(i).getElementsByTagName("enclosure").item(n).getAttribute("url");
     }
}
else{
     mp3= 'NULL.mp3';
}
var itemsEnclosureLength=items.item(i).getElementsByTagName(“附件”).length;
var itemsEnclosureExists=items.item(i).getElementsByTagName(“附件”);
如果(itemsEnclosureExists){

对于(n=0;n
items.item(i)
应该是
items[i]
,不是吗?@Barmar no.不使用tianium.items.items.item(i)对于所有其他标记都可以正常工作。如果我用mp3Test注释掉行,它将运行。我缺少一些东西:(@Barmar它可能是,但从技术上讲,
.item()
是一个真实有效的方法:。我喜欢
[i] 
更好though@Ian我以前尝试过[I],它导致应用程序崩溃,即使是在每次循环并将标题添加到数组的基本迭代中。嘿,你能显示你的响应数据吗?那么,也许我可以帮你。