Javascript 通过单击按钮分别显示字符串数组的元素

Javascript 通过单击按钮分别显示字符串数组的元素,javascript,jquery,ajax,Javascript,Jquery,Ajax,我从服务器端收到一条文本,我想为每个按钮点击显示一个单词。我的做法如下: $(document).ready(function() { $.ajax( { type: "GET", dataType: 'json', url: "request.php",

我从服务器端收到一条文本,我想为每个按钮点击显示一个单词。我的做法如下:

$(document).ready(function() 
            {       
                $.ajax(
                {
                    type: "GET",
                    dataType: 'json',
                    url: "request.php",
                    success: function (response){

                var words = text.match(/\b([a-z]{1,})\b/gi);  //text is an element of json array
                        for (i = 0;  i < 10;  ++i)
                            $("#container").append("<span>"+words[i]+"</span>").hide();
                    }           
                });
            });
Jquery选择器无法选择跨度,因为它们不在html中。你能给我一个解决办法吗

当我写$container.fadeIn450时;它显示所有单词。

声明两个变量:

var arr = [];
var inc = 0;  
ajax调用后,将单词存储到数组中:

for (i = 0;  i < 10;  ++i)
                        arr.push(words[i]);
                }   
然后:

我还没有测试过这个。希望这有帮助。

声明两个变量:

var arr = [];
var inc = 0;  
ajax调用后,将单词存储到数组中:

for (i = 0;  i < 10;  ++i)
                        arr.push(words[i]);
                }   
然后:


我还没有测试过这个。希望这有帮助。

这里有一个选项供您选择:

$('span').hide();
var i = 1;

$("#button").click(function(){
    if (i <= $("#container > span").size()){
        $("#container span:nth-child("+i+")").fadeIn(450);  // shows nothing
        if (i < $("#container > span").size()){
            i++;
        }
        else {
            $(this).attr("disabled", true)
        }
    }    
});
请参见此处的示例-


希望能有帮助。Alex

这里有一个选项供您选择:

$('span').hide();
var i = 1;

$("#button").click(function(){
    if (i <= $("#container > span").size()){
        $("#container span:nth-child("+i+")").fadeIn(450);  // shows nothing
        if (i < $("#container > span").size()){
            i++;
        }
        else {
            $(this).attr("disabled", true)
        }
    }    
});
请参见此处的示例-


希望能有帮助。Alex

您的代码有两个问题

您正在使用.append将span元素追加到容器中,但它返回容器jQuery对象。所以,每次您附加一个您调用的span元素时,都要为container.hide。正如你所看到的,我对它做了一点修改。您必须创建span元素,隐藏它,然后将其附加到容器中,如下所示

$("<span>"+words[i]+" </span>").hide().appendTo("#container");
$('#container span:hidden:first');
最后,将这些实现到您的代码中会得到这个结果

$(document).ready(function() {
    $.ajax({
        type: "GET",
        dataType: 'json',
        url: "request.php",
        success: function(response) {
            var words = text.match(/\b([a-z]{1,})\b/gi); //text is an element of json array
            for (i = 0; i < 10; ++i) {
                $("<span>"+words[i]+" </span>").hide().appendTo("#container");
            }
        }
    });
});

$(function() {
    $("#button").click(function() {
        $('#container span:hidden:first').fadeIn(450);
    });
});

是您的代码示例。

您的代码有两个问题

您正在使用.append将span元素追加到容器中,但它返回容器jQuery对象。所以,每次您附加一个您调用的span元素时,都要为container.hide。正如你所看到的,我对它做了一点修改。您必须创建span元素,隐藏它,然后将其附加到容器中,如下所示

$("<span>"+words[i]+" </span>").hide().appendTo("#container");
$('#container span:hidden:first');
最后,将这些实现到您的代码中会得到这个结果

$(document).ready(function() {
    $.ajax({
        type: "GET",
        dataType: 'json',
        url: "request.php",
        success: function(response) {
            var words = text.match(/\b([a-z]{1,})\b/gi); //text is an element of json array
            for (i = 0; i < 10; ++i) {
                $("<span>"+words[i]+" </span>").hide().appendTo("#container");
            }
        }
    });
});

$(function() {
    $("#button").click(function() {
        $('#container span:hidden:first').fadeIn(450);
    });
});
是代码的一个示例。

是一种非常可靠的方法,可以逐个显示跨距。如何从AJAX响应创建跨度取决于PHP脚本返回的数据类型。如果响应如下所示:

[
    "Some",
    "words",
    "via",
    "JSON"
]
$.ajax({
    type: "GET",
    dataType: 'text',
    url: "request.php",
    success: function(data, status) {
        var container = $("#container");

        var words = data.split(' ');
        var word;

        for (word in words) {
            $('<span />').append(word).appendTo(container);
        }
    }
});
…这很简单:

$.ajax({
    type: "GET",
    dataType: 'json',
    url: "request.php",
    success: function(data, status) {
        var container = $("#container");
        var word;

        for (word in data) {
            $('<span />').append(word).appendTo(container);
        }
    }
});
请注意,我将数据类型更改为text,并添加了变量words,从而在空格字符上拆分结果

我希望这对您有所帮助。

是一种非常可靠的方法,可以逐个显示跨度。如何从AJAX响应创建跨度取决于PHP脚本返回的数据类型。如果响应如下所示:

[
    "Some",
    "words",
    "via",
    "JSON"
]
$.ajax({
    type: "GET",
    dataType: 'text',
    url: "request.php",
    success: function(data, status) {
        var container = $("#container");

        var words = data.split(' ');
        var word;

        for (word in words) {
            $('<span />').append(word).appendTo(container);
        }
    }
});
…这很简单:

$.ajax({
    type: "GET",
    dataType: 'json',
    url: "request.php",
    success: function(data, status) {
        var container = $("#container");
        var word;

        for (word in data) {
            $('<span />').append(word).appendTo(container);
        }
    }
});
请注意,我将数据类型更改为text,并添加了变量words,从而在空格字符上拆分结果

我希望这对你有帮助。

这样就行了

$("#container span:eq(" + ($("#container span.active").removeClass("active").fadeOut().index()+1) + ")").addClass("active").fadeIn();
请参见此处的演示:

这样就可以了

$("#container span:eq(" + ($("#container span.active").removeClass("active").fadeOut().index()+1) + ")").addClass("active").fadeIn();

请参见此处的演示:

您能提供JSON响应吗?您能再解释一下吗?您能在请求时给出浏览器中收到的文本吗?PHP您能提供JSON响应吗?您能再解释一下吗?您能在请求时给出浏览器中收到的文本吗?phpIt有效,谢谢。$+单词[i]+.hide.appendTocontainer;和$container.append+words[i]+.hide;更新了我的答案并解释了一切。谢谢,还有一个小问题。我在不同的直线上显示跨距,但是我将它们设置为内联样式。是什么原因造成的?如果不看代码,很难说出任何事情。你可以做一个案例,然后问另一个问题。关于CSS,用Firebug或开发者工具检查你的span元素,看看它是否有其他CSS规则显示:block或类似的东西。谢谢你。$+单词[i]+.hide.appendTocontainer;和$container.append+words[i]+.hide;更新了我的答案并解释了一切。谢谢,还有一个小问题。我在不同的直线上显示跨距,但是我将它们设置为内联样式。是什么原因造成的?如果不看代码,很难说出任何事情。你可以做一个案例,然后问另一个问题。关于CSS,用Firebug或开发者工具检查你的span元素,看看它是否有其他CSS规则显示:block或类似的东西