javascript - for loop randomly crashing on certain iterations -


there must out there can spot error! i'm parsing xml feed , running through loop items on page:

www.highlandradio.com/feed/ 

i encountering error on line setting variable mp3test. want set equal url attribute of enclosure tag (if exists). why including test check if each item has enclosure tag, if setting equal url tag if doesn't setting equal 'null.mp3' now. when running through loop getting correct numbers amount , on iterations of loop, crashes. using titanium , not getting proper error messages. highlights line set mp3test , says debug current instruction pointer. i'm going crazy this. please help.

var url="http://www.highlandradio.com/feed/";   var xhr = titanium.network.createhttpclient();  xhr.onload = function() {     // data returned 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);      (var = 0; < 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 --------------------------"+ mp3test);        } 

bump2

the problem was using 2 counters had same value! silly mistake but...here's solution:

var itemsenclosurelength=items.item(i).getelementsbytagname("enclosure").length; var itemsenclosureexists=items.item(i).getelementsbytagname("enclosure");  if (itemsenclosureexists){        (n=0; n<itemsenclosurelength; n++){          mp3=items.item(i).getelementsbytagname("enclosure").item(n).getattribute("url");      } } else{      mp3= 'null.mp3'; } 

Comments