mar*_*dge 1 javascript random jquery
此函数从文本文件quotes.txt中选择一个随机引用(每个引号由@分隔)并在引号div中显示它,例如<div class="quotes">quote shown here</div>在每个页面加载时.
但是为什么它有时会跳过引用并且没有显示任何内容<div>?
$.get('quotes.txt', function(data) {
var quotes = data.split("\@");
var idx = Math.floor(quotes.length * Math.random());
$('.quotes').html(quotes[idx]);
});
Run Code Online (Sandbox Code Playgroud)
这是随机发生器的问题(从我的阅读中看起来不是很随机)?有没有办法让它只能从一定数量的报价中随机选择,即50?有没有更好的方法 - 也许是PHP - 生成1到50之间的随机数?
quotes.txt看起来像这样:
Lorem ipsum dolor sit amet, consectetur adipiscing elit@
Fusce tincidunt, ante ut scelerisque@
Mauris lacinia, magna sed auctor pellentesque, diam nisl rutrum ligula@
Etiam tempor elementum augue, vitae cursus eros laoreet@
Donec imperdiet ullamcorper pharetra@
Run Code Online (Sandbox Code Playgroud)
编辑4/27/11 我最终使用了一个不显示空白行的问题.quotes.html以这种方式构造:
<div class="quote">Lorem ipsum dolor sit amet, consectetur adipiscing elit</div>
<div class="quote">Lorem ipsum dolor sit amet, consectetur.</div>
Run Code Online (Sandbox Code Playgroud)
功能:
$('div#quotescontainer').load('quotes.html',function(){
var $quotes = $(this).find('div.quote');
var n = $quotes.length;
var random = Math.floor( Math.random()*n );
$quotes.hide().eq(random).fadeIn();
});
Run Code Online (Sandbox Code Playgroud)
拆分文件后@,最后一项quotes可能是一个空字符串,因为你@在文件末尾的换行符之前有一个.
至于随机数发生器的感知"随机性",这里可能没有问题.众所周知,人类在检测序列是否随机时是不好的.