ti-enxame.com

JS - Dividindo uma string e passando pelos resultados

No JS, estou tendo problemas para descobrir como dividir uma string proveniente de uma chamada AJAX.

Isto é o que eu tenho até agora:

xmlhttp.onreadystatechange = function()
{
if (xmlhttp.readyState==4 && xmlhttp.status==200)
{
feedUpdateResponse = xmlhttp.responseText;
/////...split script.../////
}
}
xmlhttp.open("GET","https://myDomain.com/myScript.aspx",true);
xmlhttp.send();

Onde você tem o script /////...split ... ///// no meu script acima, eu preciso adicionar uma pequena função que divide a string retornada da minha chamada AJAX.

A string simplesmente contém nomes de DIVs, como este:

feedUpdateResponse = "div1/div2/div3/div4"

Eu gostaria de primeiro dividir a string por suas barras (/) e executar um loop pelos diferentes valores e fazer coisas com esses elementos na minha página.

Para dar uma idéia do que eu preciso alcançar, eu dei este exemplo que é uma mistura de ASP & JS - é a única maneira que eu posso descrever (e mostrar que eu tive uma tentativa): )

MyArray = Split(feedUpdateResponse,"/")
For Each X In MyArray
documentGetElementById('updateAvailable_'+x).style.visibility="visible";
Next

Na minha página eu tenho um script ASP que produz carrosséis jquery, todos contidos por DIVs separados. Os DIVs são denominados DIV1, DIV2, etc. Por Dentro, DIV1, por exemplo, é um elemento de texto chamado updateAvailable_div1 que alertará o usuário "Há novas fotos disponíveis para este feed, por favor, clique no botão atualizar".

Alguém poderia me explicar como posso mudar meu exemplo acima para trabalhar no JS? Só precisa dividir a string em uma matriz e percorrer os valores divididos ...

21
TheCarver

Você pode usar .split() para dividir uma string em um caractere especificado com os resultados retornados como uma matriz. Então é só uma questão de fazer um loop através da matriz:

// given your existing variable
// feedUpdateResponse = "div1/div2/div3/div4" as set in the
// code in the question, add this:

var a = feedUpdateResponse.split("/"),
    i;

for (i = 0; i < a.length; i++) {
    document.getElementById("updateAvailable_" + a[i]).style.visibility
                                                                 = "visible";
}
28
nnnnnn

Obtenha seu array via string.split("/"). Iterar seu array usando seu método de escolha. Eu prefiro Array.forEach() :

feedUpdateResponse.split("/").forEach(function (item) {
    document.getElementById(item).style.visibility = "visible";
});

Veja as notas compatibilidade para usar .forEach() em navegadores mais antigos.

25
gilly3
var feedUpdateResponse = "div1/div2/div3/div4";
var feedUpdateSplit = feedUpdateResponse.split("/");

for (var x = 0; x < feedUpdateSplit.length; x++) {
  document.getElementById("updateAvailable_" + feedUpdateSplit[x]).style.visibility = "visible";
}
0
John Hartsock