jQuery循环选择最后一项,但未正确添加项
我有一个else语句,它触发了一个特定的循环,3个下拉列表,一个是出版商列表,一个是作者列表,一个是相互依赖的年份列表。当我选择一个发布者,然后选择“所有作者”时,它会触发第一个不起作用的循环。当我选择一个发布者,然后选择一个作者时,它会触发第二个循环,这确实有效。我试图修复第一个循环,但似乎无法使其工作 与获取单个数据组不同,我只获取一组数据,所有作者都在其中,如下图所示,未知是我列表中的最后一项,因此我猜循环只是到达列表的末尾,并将其用于originalGenre,并将其中的所有内容捆绑在一起:jQuery循环选择最后一项,但未正确添加项,jquery,Jquery,我有一个else语句,它触发了一个特定的循环,3个下拉列表,一个是出版商列表,一个是作者列表,一个是相互依赖的年份列表。当我选择一个发布者,然后选择“所有作者”时,它会触发第一个不起作用的循环。当我选择一个发布者,然后选择一个作者时,它会触发第二个循环,这确实有效。我试图修复第一个循环,但似乎无法使其工作 与获取单个数据组不同,我只获取一组数据,所有作者都在其中,如下图所示,未知是我列表中的最后一项,因此我猜循环只是到达列表的末尾,并将其用于originalGenre,并将其中的所有内容捆绑在一
{
"publisher": "Random House",
"originalGenre": "Unknown",
"authors": [{
"author": "Stephen King",
"publishedYear": [2008, 2012, 2013]
}, {
"author": "Mark Wallace",
"publishedYear": [2010]
}, {
"author": "Will Chambers",
"publishedYear": [2010, 2013]
}, {
"author": "Sally Bernstein",
"publishedYear": [2014]
}, {
"author": "Richard Burns",
"publishedYear": [2014]
}]
}
我所期望的是:
"publishers": [{
"publisher": "Random House",
"originalGenre": "Horror",
"authors": [{
"author": "Stephen King",
"publishedYear": [2008, 2012, 2013]
}, {
"author": "Mark Wallace",
"publishedYear": [2010]
}]
}, {
"publisher": "Random House",
"originalGenre": "Biography",
"authors": [{
"author": "Will Chambers",
"publishedYear": [2010, 2013]
}, {
"author": "Sally Bernstein",
"publishedYear": [2014]
}]
}, {
"publisher": "Random House",
"originalGenre": "Unknown",
"authors": [{
"author": "Richard Burns",
"publishedYear": [2014]
}]
}]
我的代码是:
var newObj = {
'publisher': publisher,
'originalGenre': "",
'authors': []
};
if (author == '') {
for (i = 0; i < data.genres.length; i++) {
for (j = 0; j < data.genres[i].publishers.length; j++) {
var originalGenre = data.genres[i].publishers[j].originalGenre;
if (data.genres[i].publishers[j].publisher == publisher) {
newObj.authors = newObj.authors.concat(data.genres[i].publishers[j].authors);
newObj.originalGenre = originalGenre;
break
}
}
}
}
当我选择一个特定的作者并选择“所有年份”时,这就是我所期望的代码,所以我只需要复制这段代码并应用到“所有作者”部分,我所需要做的就是在循环中的某个地方定义一个作者,我想
else {
var newAuthor = {
'author': author,
'publishedYear': []
};
if (year == '') {
for (i = 0; i < profileData.genres.length; i++) {
var originalgenre = profileData.genres[i].genre;
for (j = 0; j < profileData.genres[i].publishers.length; j++) {
for (k = 0; k < profileData.genres[i].publishers[j].authors.length; k++) {
if (profileData.genres[i].publishers[j].authors[k].author == author) {
newAuthor.publishedYear = profileData.genres[i].publishers[j].authors[k].publishedYear;
newObj.originalgenre = originalgenre;
}
}
}
}
}
newObj.authors.push(newAuthor);
}
所以这两段代码都在一起,如果选择了所有作者,它将执行第一段代码,如果选择了一个作者,它将获取分配给“author”变量的下拉列表的值,并将其分配给“newAuthor”变量,然后继续获取年份。然后将其推入新的主obj
有没有办法在第一段代码中复制第二段代码的工作功能
谢谢不幸的是,我使用的是IE8,无法使用JSFIDLE,只是无法在all@Hagbard我建议在进行web开发时,手头有多个浏览器。下载和安装chrome或firefox不需要很长时间。我不使用自己的电脑,因为公司的政策,我只能使用IE8,这让我发疯,但没有什么可以做的。强迫开发人员只使用IE8进行开发应该违反他们的人权!: