【发布时间】:2020-05-15 10:13:52
【问题描述】:
我希望有人可以帮助我解决这个问题。我正在编写一个 JavaScript 来连续 20 个月每月显示 20 个问候中的一个,然后再开始问候。下面是 GreetingDetails 数组:
var GreetingDetails = [
{// index0
Greeting: "Foreign Greeting 0",
Language: "Foreign Language",
Translation: "English Translation",
AudioPath: "/Content/Greetings/Pronunciation0.mp3",
CommerceLink: link
}, // index0
{// index1
Greeting: "Foreign Greeting 1",
Language: "Foreign Language",
Translation: "English Translation",
AudioPath: "/Content/Greetings/Pronunciation1.mp3",
CommerceLink: link
}, // index1
{// index2
Greeting: "Foreign Greeting 2",
Language: "Foreign Language",
Translation: "English Translation",
AudioPath: "/Content/Greetings/Pronunciation2.mp3",
CommerceLink: link
}, // index2
{// index3
Greeting: "Foreign Greeting 3",
Language: "Foreign Language",
Translation: "English Translation",
AudioPath: "/Content/Greetings/Pronunciation3.mp3",
CommerceLink: link
}, // index3
{// index4
Greeting: "Foreign Greeting 4",
Language: "Foreign Language",
Translation: "English Translation",
AudioPath: "/Content/Greetings/Pronunciation4.mp3",
CommerceLink: link
}, // index4
{// index5
Greeting: "Foreign Greeting 5",
Language: "Foreign Language",
Translation: "English Translation",
AudioPath: "/Content/Greetings/Pronunciation5.mp3",
CommerceLink: link
}, // index5
{// index6
Greeting: "Foreign Greeting 6",
Language: "Foreign Language",
Translation: "English Translation",
AudioPath: "/Content/Greetings/Pronunciation6.mp3",
CommerceLink: link
}, // index6
{// index7
Greeting: "Foreign Greeting 7",
Language: "Foreign Language",
Translation: "English Translation",
AudioPath: "/Content/Greetings/Pronunciation7.mp3",
CommerceLink: link
}, // index7
{// index8
Greeting: "Foreign Greeting 8",
Language: "Foreign Language",
Translation: "English Translation",
AudioPath: "/Content/Greetings/Pronunciation8.mp3",
CommerceLink: link
}, // index8
{// index9
Greeting: "Foreign Greeting 9",
Language: "Foreign Language",
Translation: "English Translation",
AudioPath: "/Content/Greetings/Pronunciation9.mp3",
CommerceLink: link
}, // index9
{// index10
Greeting: "Foreign Greeting 10",
Language: "Foreign Language",
Translation: "English Translation",
AudioPath: "/Content/Greetings/Pronunciation10.mp3",
CommerceLink: link
}, // index10
{// index11
Greeting: "Foreign Greeting 11",
Language: "Foreign Language",
Translation: "English Translation",
AudioPath: "/Content/Greetings/Pronunciation11.mp3",
CommerceLink: link
}, // index11
{// index12
Greeting: "Foreign Greeting 12",
Language: "Foreign Language",
Translation: "English Translation",
AudioPath: "/Content/Greetings/Pronunciation12.mp3",
CommerceLink: link
}, // index12
{// index13
Greeting: "Foreign Greeting 13",
Language: "Foreign Language",
Translation: "English Translation",
AudioPath: "/Content/Greetings/Pronunciation13.mp3",
CommerceLink: link
}, // index13
{// index14
Greeting: "Foreign Greeting 14",
Language: "Foreign Language",
Translation: "English Translation",
AudioPath: "/Content/Greetings/Pronunciation14.mp3",
CommerceLink: link
}, // index14
{// index15
Greeting: "Foreign Greeting 15",
Language: "Foreign Language",
Translation: "English Translation",
AudioPath: "/Content/Greetings/Pronunciation15.mp3",
CommerceLink: link
}, // index15
{// index16
Greeting: "Foreign Greeting 16",
Language: "Foreign Language",
Translation: "English Translation",
AudioPath: "/Content/Greetings/Pronunciation16.mp3",
CommerceLink: link
}, // index16
{// index17
Greeting: "Foreign Greeting 17",
Language: "Foreign Language",
Translation: "English Translation",
AudioPath: "/Content/Greetings/Pronunciation17.mp3",
CommerceLink: link
}, // index17
{// index18
Greeting: "Foreign Greeting 18",
Language: "Foreign Language",
Translation: "English Translation",
AudioPath: "/Content/Greetings/Pronunciation18.mp3",
CommerceLink: link
}, // index18
{// index19
Greeting: "Foreign Greeting 19",
Language: "Foreign Language",
Translation: "English Translation",
AudioPath: "/Content/Greetings/Pronunciation19.mp3",
CommerceLink: link
} // index19
];
我尝试了几种不同的方法,测试获取每个问候语,但继续遇到仅获取 12. 12 的问题,因为一年中有 12 个月,我正在检查月份以进行比较环形。我想让这个尽可能动态,所以没有人必须再次触摸。这是我进行日期比较最成功的尝试:
var m = ['January', 'February', 'March', 'April', 'May', 'June', 'July', 'August', 'September','October', 'November', 'December'];
var y = [];
var d = new Date();
//var test = new Date(2020, 1, 1);
// This for loop adds the years to the y-array
for (var i = 0; i < addYears; i++) {
y.push(startYear++);
}
//alert(m.length);
//alert(y.length);
for (var i = 0; i < y.length; i++) {
if (d.getFullYear() === y[i]) {
for (var j = 0; j < GreetingDetails.length; j++) {
if (m[d.getMonth()] === m[j]) {
GreetingBuilder = GreetingDetails[j];
}
}
}
}
var GreetingBuilder;
GreetingElements = {
topSection: function () {
var holder = document.createElement("section");
holder.id = "required-greeting";
return holder;
},
accessabilityP: function () {
var holder = document.createElement("p");
holder.classList.add("visuallyhidden");
holder.innerText = "The following is a greeting given in one of 20 foreign languages.";
return holder;
},
greetingContainer: function () {
var holder = document.createElement("dl");
holder.id = "language-greeting";
return holder;
},
greetingDT: function () {
var holder = document.createElement("dt");
holder.classList.add("greeting");
return holder;
},
greetingLink: function () {
var holder = document.createElement("a")
holder.href = GreetingBuilder.CommerceLink;
holder.classList.add("language-link");
holder.text = GreetingBuilder.Greeting;
return holder;
},
audioContainer: function () {
var holder = document.createElement("dd");
holder.classList.add("speaker");
return holder;
},
audioPlayer: function () {
var holder = document.createElement("audio");
holder.id = GreetingBuilder.Language.toLowerCase().replace(" ", "-");
holder.src = GreetingBuilder.AudioPath;
holder.preload = "auto";
return holder;
},
audioButton: function () {
var holder = document.createElement("button");
holder.classList.add("pronunciation");
holder.onclick = function () {
document.getElementById(GreetingElements.audioPlayer().id).play();
};
holder.innerText = "Listen to pronunciation";
return holder;
},
languageNameDD: function () {
var holder = document.createElement("dd");
holder.classList.add("language");
holder.innerText = "(" + GreetingBuilder.Language + ")";
return holder;
},
languageTranslationDD: function () {
var holder = document.createElement("dd");
holder.classList.add("translation");
holder.innerText = '"' + GreetingBuilder.Translation + '"';
return holder;
},
getFullGreetingSection: function () {
var sectionInstance = this.topSection();
var greetingDTInstance = this.greetingDT();
var greetingContainerInstance = this.greetingContainer();
var audioContainerInstance = this.audioContainer();
greetingDTInstance.appendChild(this.greetingLink());
greetingContainerInstance.appendChild(greetingDTInstance);
audioContainerInstance.appendChild(this.audioPlayer());
audioContainerInstance.appendChild(this.audioButton());
greetingContainerInstance.appendChild(audioContainerInstance);
greetingContainerInstance.appendChild(this.languageNameDD());
greetingContainerInstance.appendChild(this.languageTranslationDD());
sectionInstance.appendChild(this.accessabilityP());
sectionInstance.appendChild(greetingContainerInstance);
return sectionInstance;
}
}
document.getElementsByClassName("back-to-top")[0].insertAdjacentElement('afterend', GreetingElements.getFullGreetingSection());
如果您发现我做错了什么,请告诉我。我确信有更好的方法来解决这个问题,所以任何帮助都将不胜感激。
【问题讨论】:
-
看来
(year * 12 + month) % 20是获取索引所需的全部内容。
标签: javascript jquery arrays multidimensional-array jagged-arrays