Javascript利用数组赢得';行不通
我正在尝试实现6个文本选项中的一个在加载/刷新时随机出现的效果Javascript利用数组赢得';行不通,javascript,jquery,Javascript,Jquery,我正在尝试实现6个文本选项中的一个在加载/刷新时随机出现的效果 <html> <body> <script> var myQuotes = new Array(); myQuotes[0] = "text option 1"; myQuotes[1] = "text option 2"; myQuotes[2] = "text option 3"; myQuotes[3] = "text option 4"; m
<html>
<body>
<script>
var myQuotes = new Array();
myQuotes[0] = "text option 1";
myQuotes[1] = "text option 2";
myQuotes[2] = "text option 3";
myQuotes[3] = "text option 4";
myQuotes[4] = "text option 5";
myQuotes[5] = "text option 6";
var myRandom = Math.floor(Math.random()*myQuotes.length);
$('#myQuote').html(myQuote[myRandom]);
</script>
</body>
</html>
var myQuotes=新数组();
myQuotes[0]=“文本选项1”;
myQuotes[1]=“文本选项2”;
myQuotes[2]=“文本选项3”;
myQuotes[3]=“文本选项4”;
myQuotes[4]=“文本选项5”;
myQuotes[5]=“文本选项6”;
var myRandom=Math.floor(Math.random()*myQuotes.length);
$('#myQuote').html(myQuote[myRandom]);
我试着从这里借用代码:$('#myQuote').html(myQuote[myRandom])代码>
改为
$('#myQuote').html(myQuotes[myRandom])代码>
脚本应该放在body
的末尾,以便准备myQuote
。我建议您使用浏览器的调试模块。当代码在最后一行执行时,您会发现出现了问题 有两个潜在问题
首先,myRandom
变量可能超过myQuotes
数组的最大索引(5)。myQuotes
==6的长度;因此,下面的公式将返回一个介于0和6之间的值,这将导致越界错误
var myRandom = Math.floor(Math.random() * myQuotes.length);
相反,可以像这样使用myQuotes.length-1
(当然,这假设数组大于零,所以请执行一些长度检查):
Second,正如其他人指出的,您指的是myQuote变量,而不是myQuotes
// You have:
$('#myQuote').html(myQuote[myRandom]);
// How about:
$('#myQuote').html(myQuotes[myRandom]);
您所说的“不工作”是什么意思?调用脚本时,不存在id等于myQuote的元素(Quote将转到此处
)。这意味着$('#myQuote')
找不到任何元素,因此.html(foo)
没有效果。此外,将数组编写为一个文本将更加简洁,['a',B',C']
@PaulS。很可能。如果这真的是整个HTML页面,那么甚至连jQuery都不包括在内。你在浏览器的控制台中发现错误了吗?@Thilo也是真的,因为这种代码的问题几乎总是在元素存在之前调用。。
// You have:
$('#myQuote').html(myQuote[myRandom]);
// How about:
$('#myQuote').html(myQuotes[myRandom]);