Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/403.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 如何使用“获取选择选项元素的ID”;更改“;事件侦听器?_Javascript_Arrays_Function_Api - Fatal编程技术网

Javascript 如何使用“获取选择选项元素的ID”;更改“;事件侦听器?

Javascript 如何使用“获取选择选项元素的ID”;更改“;事件侦听器?,javascript,arrays,function,api,Javascript,Arrays,Function,Api,我是javascript新手,我一直在做这个“项目”,但我需要一些帮助,因为我被卡住了。我可能没有在标题中正确地表达我自己,因此: 我想通过使用上的事件侦听器获取选项元素()的ID,因此当我从选择下拉列表中选择例如“操作”时,我希望该更改触发一个函数,该函数将获取该元素的ID并在下面的函数中使用它。这是我到目前为止的代码,它基本上实现了以下功能: 1.)获取流派列表 2.)然后为response.data.genres中的每个项目设置一个与数组长度相对应的数字(总共19个项目) 3.)如果所选的

我是javascript新手,我一直在做这个“项目”,但我需要一些帮助,因为我被卡住了。我可能没有在标题中正确地表达我自己,因此:

我想通过使用
上的
事件侦听器获取选项元素(
)的ID,因此当我从选择
下拉列表中选择例如
“操作”
时,我希望该更改触发一个函数,该函数将获取该元素的ID并在下面的函数中使用它。这是我到目前为止的代码,它基本上实现了以下功能:

1.)获取流派列表

2.)然后为
response.data.genres
中的每个项目设置一个与数组长度相对应的数字(总共19个项目)

3.)如果所选的
“option”
元素与数组中的流派名称匹配,则它将定义流派ID(整数),并向API发出另一个请求,以便列出与该流派ID匹配的电影。请提前感谢

//Genres
function genres(){
    //API request.
    axios.get("https://api.themoviedb.org/3/genre/movie/list?api_key=<API_KEY>&language=en-US")
        .then((response)=>{
            //console.log(response);

            let genres = response.data.genres;
            genres.length;
            console.log(genres)
            for(var i = 0; i < genres.length; i++){
                var genresId = response.data.genres[i];
                var tag = document.getElementById("Thriller");
                console.log(genresId);
                if(tag.id === genresId.name){
                   let genre = genresId.id;
                   axios.get("https://api.themoviedb.org/3/discover/movie?api_key=<API_KEY>&language=en-US&sort_by=popularity.desc&include_adult=false&include_video=false&page=1&with_genres="+genre)
                    .then((response)=>{
                        console.log(response);
                    })
                }
            }
        })
}
//类型
函数类型(){
//API请求。
axios.get(“https://api.themoviedb.org/3/genre/movie/list?api_key=&language=en-美国”)
。然后((响应)=>{
//控制台日志(响应);
让genres=response.data.genres;
体裁。长度;
console.log(类型)
for(var i=0;i{
控制台日志(响应);
})
}
}
})
}

如果我理解正确,那么有两个步骤。 1.获取流派列表并用其填充选择框。 2.如果选择了选择框中的选项,则获取电影列表

第一步,可以使用innerHTML方法。对于返回的每个流派,您构建一个类似
genre
的字符串。使用innerHTML,可以将这些选项添加到选择框中。“值”属性用于查看选择了哪个选项

接下来,我们向dropbox添加一个eventlistener,这样我们的脚本将对用户所做的更改做出反应。我们正在侦听的事件是“change”,它将触发函数“getMovies”。有关更多信息,请参阅
event.target.value
将为您提供所选选项的值,您可以将其用作流派id

在这个函数中,您将执行第二个api调用来获取电影列表

没有api调用的一个简单示例如下:

让genreDropdown=document.getElementById('genre');
genreDropdown.innerHTML=getGenres();
genreDropdown.addEventListener(“更改”,getMovies);
函数getGenres(){
let genres=['action'、'romcom'、'thriller'];//这将替换为获取类型的api调用
让innerHtml='';
for(var i=0;i

加载。。。

以下代码将查找
(其id准确无误)元素,并在更改时输出直接子元素的id(

我为你树立了一个榜样>


希望您能使用jQuery代码。

您能粘贴您的选择选项代码和更改事件代码吗?可能重复的问题我不知道如何将其标记为该问题的可能重复,而这仅适用于普通Javascript。尽管如此,我们还是会找到解决办法:)
$(document).ready(function(){
    $("#myDropdown").on("change", function(){
    the_id = $(this).children(":selected").attr("id")
    $("#output").html(the_id);
  });
});