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或类似的东西