Javascript 获取jQuery.click()以多次激活
我在一个报价机上工作,当单击它时,它会显示一个随机报价,以及在我的数组中找到的作者。我可以让它显示一次随机报价,但再次单击按钮不会产生任何效果Javascript 获取jQuery.click()以多次激活,javascript,jquery,Javascript,Jquery,我在一个报价机上工作,当单击它时,它会显示一个随机报价,以及在我的数组中找到的作者。我可以让它显示一次随机报价,但再次单击按钮不会产生任何效果 //变量 /////////////// 变量引号=[ [“引用1”、“作者1”], [“引用2”,“作者2”], [“引用3”,“作者3”], [“引文4”,“作者4”] ]; var randomQuote=quotes[Math.floor(Math.random()*quotes.length)]; //功能 /////////////// 函
//变量
///////////////
变量引号=[
[“引用1”、“作者1”],
[“引用2”,“作者2”],
[“引用3”,“作者3”],
[“引文4”,“作者4”]
];
var randomQuote=quotes[Math.floor(Math.random()*quotes.length)];
//功能
///////////////
函数quoteGeneration(){
美元(“.quotes”)。替换为(随机报价);
};
//报价按钮
/////////////////
$(“.quote按钮”)。单击(函数(){
引号生成();
});代码>
随机报价生成器
这就是引用的地方
引用作者
新报价
您的问题与单击无关。您的问题是生成一次随机数并读取一次引号
将随机数/引号选择移动到方法内部。此外,您正在替换元素,而不是其中的文本
//变量
///////////////
变量引号=[“引号1”、“作者1”]、[“引号2”、“作者2”]、[“引号3”、“作者3”]、[“引号4”、“作者4”];
//功能
///////////////
函数quoteGeneration(){
var randomQuote=quotes[Math.floor(Math.random()*quotes.length)];
$(“.quotes”).text(随机引用);
};
//报价按钮
/////////////////
$(“.quote按钮”)。单击(函数(){
引号生成();
});代码>
随机报价生成器
这就是引用的地方
引用作者
新报价
有两个主要问题。第一个原因是您在第一次单击时就从DOM中删除了.quotes
元素。使用text()
代替replaceWith()
:
第二,你的逻辑是有缺陷的,因为你只在加载页面时随机选择一个报价。这应该在单击处理程序中完成。试试这个:
var引号=[
[“引用1”、“作者1”],
[“引用2”,“作者2”],
[“引用3”,“作者3”],
[“引文4”,“作者4”]
];
$(“.quote按钮”)。单击(函数(){
var randomQuote=quotes[Math.floor(Math.random()*quotes.length)];
$(“.quotes”).text(随机引用);
});代码>
随机报价生成器
这就是引用的地方
引用作者
新报价
将变量randomQuote
移动到函数中,以便每次调用click事件时,它都会获得随机引号,从现在开始randomQuote
仅在初始加载时设置一次,因此该值不会改变,并使用html
而不是replaceWith()
//变量
///////////////
变量引号=[“引号1”、“作者1”]、[“引号2”、“作者2”]、[“引号3”、“作者3”]、[“引号4”、“作者4”];
//功能
///////////////
函数quoteGeneration(){
var randomQuote=quotes[Math.floor(Math.random()*quotes.length)];
$(“.quotes”).html(随机报价);
};
//报价按钮
/////////////////
$(“.quote按钮”)。单击(函数(){
引号生成();
});代码>
随机报价生成器
这就是引用的地方
引用作者
新报价
问题不在于功能,而是每次都用相同的引号替换文本randomQuote
被设置了一次,而且再也不会被设置,因此更改正在发生,但是因为没有任何更改,所以您不会看到任何事情发生。问题也是函数-单独修复随机选择将产生与相同的行为。quotes
元素被replaceWith()
删除
$(".quotes").text(randomQuote);