Javascript 基于下拉列表中的选择,使用jQuery填充变量
我试图根据用户从下拉菜单中的选择在jQuery中构建嵌套数组。这将在以后的JSON请求中使用 到目前为止,我的代码确实产生了几乎所需的结果,但是无论我从下拉菜单中选择选项的顺序如何,我最后登录到控制台的输出总是相同的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
$('#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];
}
}
};
});