Javascript 显示数组中文本的随机值

Javascript 显示数组中文本的随机值,javascript,jquery,Javascript,Jquery,我有以下资料: var movie; var myMovies = ['Bones', 'Psych', 'Big Bang Theory', 'Mad Men', 'Breaking Bad', 'Modern Family', 'Game of Thrones', 'Dexter','Bones', 'Psych', 'Big Bang Theory', 'Mad Men', 'Breaking Bad', 'Modern Family', 'Game of Thrones', 'De

我有以下资料:

var movie;

var myMovies = ['Bones', 'Psych', 'Big Bang Theory', 'Mad Men', 
'Breaking Bad', 'Modern Family', 'Game of Thrones', 'Dexter','Bones', 'Psych', 'Big Bang Theory', 'Mad Men', 
'Breaking Bad', 'Modern Family', 'Game of Thrones', 'Dexter','Bones', 'Psych', 'Big Bang Theory', 'Mad Men', 
'Breaking Bad', 'Modern Family', 'Game of Thrones', 'Dexter'];

function generateMovies () {
  var movie = myMovies[Math.floor(Math.random() * myMovies.length)];
}


function displayMovie() {
  generateMovies();
  console.log(movie);
  $('body').text(movie);

  setTimeout(function(){
    displayMovie();
},1000);
}

displayMovie();
我想生成一个不同的电影名称,并在屏幕上显示它们。似乎是直截了当的,但显然不是!似乎may变量未定义

谢谢


Fiddle:

您在函数中声明变量movie,因此您没有将值分配给全局变量。

只需删除
generateMovies
函数中的
var

function generateMovies () {
  movie = myMovies[Math.floor(Math.random() * myMovies.length)];
}

基本上,您首先在脚本开始时声明
movie
,然后在
generateMovies
函数中再次声明,因此电影不会返回到全局范围。

正如其他人提到的,您有一个范围问题。此外,您实际上不需要全局
movie
变量,您可以更改代码以返回预期值,如下所示:

var myMovies = ['Bones', 'Psych', 'Big Bang Theory', 'Mad Men', 
'Breaking Bad', 'Modern Family', 'Game of Thrones', 'Dexter','Bones', 'Psych', 'Big Bang Theory', 'Mad Men', 
'Breaking Bad', 'Modern Family', 'Game of Thrones', 'Dexter','Bones', 'Psych', 'Big Bang Theory', 'Mad Men', 
'Breaking Bad', 'Modern Family', 'Game of Thrones', 'Dexter'];

function generateMovies () {
  return myMovies[Math.floor(Math.random() * myMovies.length)];
}

function displayMovie() {
  var movie = generateMovies();
  console.log(movie);
  $('body').text(movie);

  setTimeout(function(){
    displayMovie();
},1000);
}

displayMovie();

或者如果您真的不需要执行
控制台.log
只需:
$('body').text(generateMovies())

谢谢,这就是问题所在!是的,设置要使用的变量会有帮助D