【发布时间】:2014-05-01 16:42:48
【问题描述】:
我需要一些帮助,因为我的回调函数 parseMovie() 只被调用一次!尽管处于一个迭代它两次的 for 循环中。我正在使用免费的 Rottentomatoes API
输出只返回一个 ID,而不是两个 ID!
并且只运行一次 parseMovie() 并返回最后一部电影的电影 ID。
有没有人解决这个脚本运行问题?
HTML 代码
<!doctype html>
<html class="no-js">
<head>
<title>Movies</title>
<link rel="stylesheet" href="css/main.css">
<script src="js/main.js"></script>
</head>
<body>
<form name="input">
<p> Actor/Actress Name: <input type="text" name="fullName"> </p>
<p> Movie 1 <input type="text" name="movie"> </p>
<p> Movie 2 <input type="text" name="movie"> </p>
<p><input type="button" value="Search movies" onclick="getMovies()"></p>
<p><textarea name="output" readonly> </textarea> </p>
</form>
</body>
</html>
JAVASCRIPT
//api key
var APIKEY = "qf54ubt95fea9n7jytr5xh6h";
var movieID = new Array();
var actor = new Array();
var actorName = "Jennifer Lawrence";
var movieTitle;
var output;
function callScript(call) {
var script = document.createElement('script');
script.setAttribute("src", call);
document.body.appendChild(script);
}
function getMovies() {
for (var x=0; x<2; x++) {
movieTitle = document.getElementsByName('movie')[x].value;
movieTitle= cleanMovieTitle(movieTitle);
var movieURL = "http://api.rottentomatoes.com/api/public/v1.0/movies.json?q=";
callScript(movieURL + movieTitle + "&page_limit=10&page=1&apikey=" + APIKEY + "&callback=parseMovie");
}
}
function cleanMovieTitle(movie) {
movie = movie.trim();
movie = movie.replace(/ /g, "+");
return movie;
}
function parseMovie(data) {
var titleData = data.movies;
for (var t=0; t<titleData.length; t++) {
movieID[movieID.length] = titleData[t].id;
aCast = titleData[t].abridged_cast;
sample = [];
for (var person = 0; person < aCast.length; person++) {
sample[sample.length] = aCast[person].name;
}
actor[actor.length] = sample;
}
for (var arry = 0; arry < actor.length; arry++) {
if (actor[arry].indexOf(actorName) >= 0) {
output = movieID[arry];
break;
} else {
alert("spelling error of some sort! Error 404");
}
}
document.input.output.value = output;
}
【问题讨论】:
-
调用它的 for 循环在哪里?
-
嘿,Willma,for 循环在 Get Movies 函数中(for x in [0,1])
-
您发布的代码只是一堆函数。在这段代码中,它们实际上都没有被调用。如果有其他相关代码,请贴出来。
-
好的,Html 代码包含一个运行获取电影功能的按钮,我将发布它
-
callScript()是在哪里定义的?据我所知,这不是原生 JS 函数。
标签: javascript api callback