正在寻找演员JS

时间:2017-11-22 14:51:56

标签: javascript for-loop innerhtml

我正在创建一个函数来查找我搜索的演员制作的所有电影,这些电影都是这样的js文件:



var filmlist = [ 
  {"Title":"Killer's Kiss", "Actors":"Frank Silvera, Jamie Smith, Irene Kane, Jerry Jarrett"}
];

var a = document.getElementById("film");

function findActors() {
  var x = document.getElementById("actor").value;
  var y = document.getElementById("actorfilm");

  a.innerHTML = "Movies with this actor: " 
  for (var i=0; i<filmlist.length; i++) {
    if (x.indexOf(filmlist[i].Actors) !== -1) {
      y.innerHTML = (filmlist[i].Title + "<br/>")
    }
  }
}
&#13;
<textarea rows="2" cols="50" id="actor" placeholder="write actor name, and press the button"></textarea>
<button onclick="findActor()">ActorButton</button>

<p id="film"></p>
<p id="actorfilm"></p>
&#13;
&#13;
&#13;

出于某种原因,它不会显示演员,但它显示了第一个a.innerhtml 我是javascript的新手,所以任何帮助都表示赞赏。

2 个答案:

答案 0 :(得分:2)

你几乎就在那里,只是你的if状况需要逆转。

if (filmlist[i].Actors.indexOf(x) )

你是检查你输入的值中的actor的超集,而不是反过来这样做。

您可以通过

使其更精确
var filteredFilms = filmlist.filter( s => s.Actors.indexOf(x) != -1 );
var output = filteredFilms.map( s => s.Title ).join( "<br/>" );

<强>演示

var filmlist = [{
  "Title": "Killer's Kiss",
  "Actors": "Frank Silvera, Jamie Smith, Irene Kane, Jerry Jarrett"
}];

var a = document.getElementById("film");

function findActors() {

  var x = document.getElementById("actor").value;
  var y = document.getElementById("actorfilm");
  a.innerHTML = "Movies with this actor: "
  var filteredFilms = filmlist.filter(s => s.Actors.indexOf(x) != -1);
  y.innerHTML = filteredFilms.map(s => s.Title).join("<br/>");

}
<!-- find actor function -->
<textarea rows="2" cols="50" id="actor" placeholder="write 
actor name, and press the button">Frank Silvera</textarea>

<button onclick="findActors()">ActorButton</button>


<p id="film"></p>

<p id="actorfilm"></p>

答案 1 :(得分:0)

您目前正在使用上一个电影标题覆盖y.innerHTML。要附加到innerHTML使用:

y.innerHTML += (filmlist[i].Title + "<br/>")

indexOf存在问题,在另一个答案中提到,可以使用

修复

if (filmlist[i].Actors.indexOf(x)) {

最后,您的HTML错误地引用了js函数,而应该是:

<button onclick="findActors()">ActorButton</button>