2017-10-17 4 views
-1

donc faire console.log sur la table fonctionne mais quand j'essaie d'obtenir une seule valeur, il renvoie undefined comme ceci [undefined: "texte"] et la seconde pour la variable de boucle est toujours 5 pour une raison quelconque. Je ne sais pas comment reproduire cela. groupCache et shoutCache sont des tableaux videsChaîne dans un tableau renvoyant undefined uniquement lorsque vous essayez d'obtenir une seule valeur?

//userid, groupCache, shoutCache defined above 

function arraysEqual(arr1, arr2) { 
    if(arr1.length !== arr2.length) 
     return false; 
    for(i = arr1.length; i--;) { 
     if(!arr2.indexOf(arr1[i])) 
      return false; 
     } 

    return true; 
} 

setInterval(function() { 
    $.getJSON("https://api.roblox.com/users/" + userid + "/groups").done(function (data) { 
     console.log(data) 
     for (i = 0; i < data.length; i++) { 
      if (!arraysEqual(data, groupCache)) { 
       groupCache.push(data[i].Id.toString()) 
      } 
     } 
     for (var v = 0; v < groupCache.length; v++) { 
      $.get("https://web.roblox.com/My/Groups.aspx?gid=" + groupCache[v]).done(function (dataA) { 
       var elems = $(dataA); 
       var finda = $('#ctl00_cphRoblox_GroupStatusPane_StatusTextField', elems); 
       shoutCache[groupCache[v]] = finda.text() // does not work 
       console.log(groupCache[v] + " :GC") 
       console.log(shoutCache) 
      }) 
     } 
    }) 
}, 10000); 

manifest.json

{ 
    "manifest_version": 2, 
    "background": { 
     "scripts": ["/libs/jquery-3.2.1.min.js", "/scripts/Notify.js"] 
    }, 
    "name": "Extension", 
    "browser_action": { 
     "default_title": "Extension" 
    }, 
    "web_accessible_resources": [ 
     "options.html", 
     "img/*.png", 
     "JSON/*.json" 
    ], 
    "options_ui": { 
     "page": "options.html", 
     "chrome_style": true 
    }, 
    "permissions": ["storage", "background"], 
    "short_name": "Extension", 
    "version": "0.1.0" 
} 
+0

appels asynchrones dans une boucle for? –

+0

Oui ........... – Filip

+0

? ............. – Filip

Répondre

0

La question de l'élément unique est une indication que vous avez quelque chose de semblable à une sortie d'erreur Bounds passe. Je vois que votre boucle commence à la longueur de la chaîne (Rappelez-vous que la longueur de la chaîne est toujours un de plus que le dernier indice d'une chaîne), de sorte que vous devriez faire le changement suivant:

function arraysEqual(arr1, arr2) { 
    if(arr1.length !== arr2.length) 
     return false; 
    for(var i = arr1.length - 1; i--;) { 
     if(!arr2.indexOf(arr1[i])) 
      return false; 
     } 

    return true; 
} 
+0

Ce n'est pas mon problème shoutCache [groupCache [v]] = finda.text() est je l'ai commenté avec // ne fonctionne pas – Filip

+0

Mon mauvais. Je suppose que je pensais juste que si la fonction arraysEqual ne fonctionnait pas alors la condition pour pousser les données vers le groupeCache ne serait pas satisfaite ce qui causerait le tableau à rester vide. Désolé mais c'est la seule idée que j'ai. Bonne chance! – dmorrow