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...
Ответы
Ответ 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";
}