Подтвердить что ты не робот

JS - разбиение строки и циклирование результатов

В JS у меня возникли проблемы с разработкой того, как разбить строку, исходящую от вызова AJAX.

Это то, что у меня есть до сих пор:

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();

Если у вас есть /////...split script.../////в моем script выше, мне нужно добавить небольшую функцию, которая разделяет строку, возвращаемую с моего вызова AJAX.

Строка содержит только имена DIV, например:

feedUpdateResponse = "div1/div2/div3/div4"

Я хотел бы сначала разделить строку на свои косые черты (/) и запустить цикл через разные значения и сделать материал для этих элементов на моей странице.

Чтобы дать представление о том, что мне нужно достичь, я привел этот пример, который представляет собой смесь ASP и JS - это единственный способ, которым я могу описать это (и показать, что я сделал попытку):)

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

На моей странице у меня есть ASP script, который создает карусели jquery, все из которых разделены отдельными DIV. DIVs называются DIV1, DIV2 и т.д. Внутри DIV1, например, есть текстовый элемент с именем updateAvailable_div1, который будет предупреждать пользователя: "Для этого фида есть новые фотографии, нажмите кнопку" Обновить ".

Может кто-нибудь, пожалуйста, объясните мне, как я могу изменить свой пример выше, чтобы работать в JS? Просто нужно разбить строку на массив и перебрать значения split...

4b9b3361

Ответ 1

Вы можете использовать .split() для разделения строки на указанный символ с результатами, возвращаемыми в виде массива. Итак, это просто вопрос цикла через массив:

// 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";
}

Ответ 2

Получите ваш массив через string.split("/"). Итерируйте свой массив, используя ваш метод выбора. Я предпочитаю Array.forEach():

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

Смотрите примечания по совместимости для использования .forEach() в старых браузерах.

Ответ 3

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";
}

Ответ 4

Попробуйте этот код:

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

for (i in a) {
    document.getElementById("updateAvailable_" + a[i]).style.visibility
                                                                 = "visible";
}