JS - 拆分字符串并循环结果

时间:2011-12-06 01:17:58

标签: javascript

在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脚本... /////,我需要添加一个小函数来分割从我的AJAX调用返回的字符串。

字符串只包含DIV的名称,如下所示:

feedUpdateResponse = "div1/div2/div3/div4"

我想首先用斜杠(/)拆分字符串,然后运行不同值的循环,然后对页面上的元素执行操作。

为了了解我需要实现的目标,我给出了这个ASP和ASP混合的例子。 JS - 这是我可能描述它的唯一方式(并表明我已经尝试过):))

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

在我的页面上,我有一个ASP脚本,可以生成jquery轮播,所有这些都由不同的DIV包含。 DIV被命名为DIV1,DIV2等。例如,在DIV1中,是一个名为updateAvailable_div1的文本元素,它会提醒用户“此Feed有新照片,请点击刷新按钮”。

有人可以向我解释我如何改变上面的例子来使用JS吗?只需要将字符串拆分成一个数组并循环遍历拆分值......

5 个答案:

答案 0 :(得分:30)

您可以使用.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";
}

答案 1 :(得分:27)

通过string.split("/")获取您的数组。使用您选择的方法迭代您的数组。我更喜欢Array.forEach()

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

请参阅compatibility notes在旧版浏览器中使用.forEach()

答案 2 :(得分:0)

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

答案 3 :(得分:0)

试试这段代码:

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

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

答案 4 :(得分:0)

作为替代:

for(element of feedUpdateResponse.split("/")){
    do_your_thing();
}

使用 for..in 最终会给你数组的索引(键),而 for..on 会给你数组的元素(值)。

你也可以这样做:

for ([index, element] of Object.entries(feedUpdateResponse.split("/"))) {
    do_your_thing();
}

如果您需要索引。

缺点是它与 IE 不兼容,但对于个人项目或快速自动化脚本,它通常对我来说很好。