Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/72.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 基于下拉列表中的选择,使用jQuery填充变量_Javascript_Jquery_Json - Fatal编程技术网

Javascript 基于下拉列表中的选择,使用jQuery填充变量

Javascript 基于下拉列表中的选择,使用jQuery填充变量,javascript,jquery,json,Javascript,Jquery,Json,我试图根据用户从下拉菜单中的选择在jQuery中构建嵌套数组。这将在以后的JSON请求中使用 到目前为止,我的代码确实产生了几乎所需的结果,但是无论我从下拉菜单中选择选项的顺序如何,我最后登录到控制台的输出总是相同的 $('#comboGenre').change(function () { var values = $('#comboGenre').val(); var parsedJSON = JSON.parse($data); //Data returned fr

我试图根据用户从下拉菜单中的选择在jQuery中构建嵌套数组。这将在以后的JSON请求中使用

到目前为止,我的代码确实产生了几乎所需的结果,但是无论我从下拉菜单中选择选项的顺序如何,我最后登录到控制台的输出总是相同的

  $('#comboGenre').change(function () {
     var values = $('#comboGenre').val();
     var parsedJSON = JSON.parse($data); //Data returned from ajax request
     for (var i = 0; i < values.length; i += 1) {
         $genreList = parsedJSON.genre[i];
         console.log($genreList);
     }
 });
编辑:

我也试过:

 $('#comboGenre').change(function () {
     var parsedJSON  = JSON.parse($data);
     $genreList = "";
     $.each(parsedJSON.genres, function(index, value){
     $genreList = parsedJSON.genres[index];
     console.log($genreList);
     });
 });

我最终得到了JSON中的所有对象,因此从这里开始,我只想将所选对象添加到$genreList变量。

如果您打破了一些逻辑,创建了一个类型查找函数,并使用所选字符串查找适当的对象,那么您可以将该对象放入稍后使用的变量中。我做了一些检查,以确保已选择的流派不在我的数组中,这是因为我正在使用多重选择

JSFiddle:

代码:

$(function(){
var selectedGenres = []; 
var genres =[{"genre":"RPG","publishers":[{"publisher":"Square","games":[{"game":"FFX","rating":[12,15]}]}]},{"genre":"Driving","publishers":[{"publisher":"Turn10","games":[{"game":"Forza","rating":[5]}]}]},{"genre":"Action","publishers":[{"publisher":"EA","games":[{"game":"COD","rating":[18,20]}]}]}]
    $('#comboGenre').change(function() {

        $(this).find(":selected").each(function() {
            var selectedGenre = findGenre($(this).val())

            if (!genreAlreadySelected(selectedGenre.genre)) {
                selectedGenres.push(selectedGenre);
            };


        });
        console.log (JSON.stringify(selectedGenres));
    });

    function genreAlreadySelected(genre){
        for(var i = 0; i < selectedGenres.length; i++){
            if (genre == selectedGenres[i].genre) {
                return true;
            };
            return false;
        }
    }

    function findGenre(genre){
        for(var i = 0; i < genres.length; i ++){
            console.log(genre)
            if(genre == genres[i].genre){
                return genres[i];
            }
        }

    };


});   

那是一个多选框吗?驾驶和行动是两种不同的选择?是的,引导式的,如果你创建了一个小提琴->这看起来对吗?->嗨,谢谢你,不太管用。我当前的代码采用了流派和它的所有子元素,并将其添加到我稍后使用的变量中。我已经尝试过这段代码,虽然它确实获得了所选的类型,但它并没有带回它的所有子类。只是名字“RPG”等。
$(function(){
var selectedGenres = []; 
var genres =[{"genre":"RPG","publishers":[{"publisher":"Square","games":[{"game":"FFX","rating":[12,15]}]}]},{"genre":"Driving","publishers":[{"publisher":"Turn10","games":[{"game":"Forza","rating":[5]}]}]},{"genre":"Action","publishers":[{"publisher":"EA","games":[{"game":"COD","rating":[18,20]}]}]}]
    $('#comboGenre').change(function() {

        $(this).find(":selected").each(function() {
            var selectedGenre = findGenre($(this).val())

            if (!genreAlreadySelected(selectedGenre.genre)) {
                selectedGenres.push(selectedGenre);
            };


        });
        console.log (JSON.stringify(selectedGenres));
    });

    function genreAlreadySelected(genre){
        for(var i = 0; i < selectedGenres.length; i++){
            if (genre == selectedGenres[i].genre) {
                return true;
            };
            return false;
        }
    }

    function findGenre(genre){
        for(var i = 0; i < genres.length; i ++){
            console.log(genre)
            if(genre == genres[i].genre){
                return genres[i];
            }
        }

    };


});