JS 代码没有按预期工作
JS code not working as expected
正在尝试调试它,但它超出了我的范围。我正在为学校制定时间表,使用 jQuery 到 append()
HTML 到 Calendar Drupal module.
生成的 td
- 有测试、调查和教训。
- 每 5 节课测试一次,每 10 节课进行一次调查。
- 在星期一、星期三和星期五,你得到两个"things"(两节课,一个测试或一个调查,一个课和一个测试,或一个调查和一个课)
- 周二和周四,你只上一节课、一次考试或一次调查
- 它不是从第 1 课、测试 1 或 inv 1 开始,而是从第 72 课、测试 14 和调查 8 开始。
这是我的代码:
jQuery(document).ready(function($) {
/* Schedule */
last = "lesson";
lesson = 71;
test = 13;
inv = 7;
function m10() {
if (lesson % 10 == 0) {
return true;
} else {
return false;
}
}
function m5() {
if (lesson % 5 == 0) {
return true;
} else {
return false;
}
}
function pMath1() {
if (m10() == false && last !== "test") {
lesson++;
last = "lesson";
return "Lesson " + lesson;
} else if (m5() == true && last !== "test") {
test++;
last = "test";
return "Test " + test;
} else if (m10() == true && last == "test") {
inv++;
last = "inv";
return "Inv " + inv;
} else {
console.log("pMath1 doesn't work");
}
}
function pMath2() {
if (m10() == false) {
lesson++;
last = "lesson";
return "Lesson " + lesson;
} else if (m5() == true && last !== "test") {
test++;
last = "test";
return "Test " + test;
} else if (m10() == true && last == "test") {
inv++;
last = "inv";
return "Inv " + inv;
} else {
console.log("pMath2 doesn't work");
}
}
$(".view-id-school .single-day td:gt(6)").each(function() {
var datePrep = $(this).attr("data-date");
var dateSplit = datePrep.split("-");
var dateStr = new Date(dateSplit[0], dateSplit[1], dateSplit[2]);
var dateStr2 = new Date(2016, 12, 03);
var classN = $(this).attr("headers");
if (classN == "Monday" || classN == "Wednesday" || classN == "Friday") {
$(this).removeClass("no-entry");
var mathC = "M: " + pMath1() + ", " + pMath2();
} else if (classN == "Tuesday" || classN == "Thursday") {
$(this).removeClass("no-entry");
var mathC = "M: " + pMath1();
} else {
mathC = "";
};
content = mathC;
if (dateStr > dateStr2) {
$(this).find(".inner").empty().append('<div class="calendar monthview"><div class="views-field views-field-title"><span class="field-content">' + content + '</span></div><div class="cutoff" /></div></div></div>');
}
});
});
更新:问题是pMath1()总是returns "Inv 8"和pMath2()保持未定义
更新 2:好的,使用这段代码让它工作。特别感谢 Xufox and Rimon Habib 的所有帮助:
jQuery(document).ready(function ($) {
/* Schedule */
dateStr2 = new Date(2016, 12, 03);
last = "lesson";
lesson = 71; //Lesson you want to start on minus 1
test = 13; //Test you want to start on minus 1
inv = 7; //Investigation you want to start on minus 1
function m10 () { if ( lesson % 10 == 0) { return true; } else { return false; } }
function m10M1 () { if ( ( (lesson % 10) - 1) == 0 && last == "inv" ) { return true; } else { return false; } }
function m5 () { if ( lesson % 5 == 0) { return true; } else { return false; } }
function pMath1 () {
if ( m10M1() ) { //Check if Lesson is x1 (e.g. 81) and minus 1 from it
last = "lesson";
return "Lesson " + lesson;
} else if ( m10() == false && last !== "test") { //Add Lesson
lesson++;
last = "lesson";
return "Lesson " + lesson;
} else if ( m5() == true && last !== "test") { //Add Test
test++;
last = "test";
return "Test " + test;
} else if ( m10() == true && last == "test") { //Add Inv
inv++;
lesson++;
last = "inv";
return "Inv " + inv;
} else {
console.log("pMath1 doesn't work");
}
}
function pMath2 () {
if ( m10M1() ) { //Check if Lesson is x1 (e.g. 81) and minus 1 from it
last = "lesson";
return "Lesson " + lesson;
}else if ( m10() == false ) { //Add Lesson
lesson++;
last = "lesson";
return "Lesson " + lesson;
} else if ( m5() == true && last !== "test") { //Add Test
test++;
last = "test";
return "Test " + test;
} else if ( m10() == true && last == "test") { //Add Inv
inv++;
lesson++;
last = "inv";
return "Inv " + inv;
} else {
console.log("pMath2 doesn't work");
}
}
$(".view-id-school .single-day td:gt(6)").each(function () {
var datePrep = $(this).attr("data-date");
var dateSplit = datePrep.split("-");
var dateStr = new Date(dateSplit[0], dateSplit[1], dateSplit[2]);
var classN = $(this).attr("headers");
if ( classN == "Monday" || classN == "Wednesday" || classN == "Friday") {
$(this).removeClass("no-entry");
var mathC = "M: " + pMath1 () + ", " + pMath2 ();
} else if (classN == "Tuesday" || classN == "Thursday") {
$(this).removeClass("no-entry");
var mathC = "M: " + pMath1 ();
} else {
mathC = "";
};
content = mathC;
if ( dateStr > dateStr2 ) {
$(this).find(".inner").empty().append('<div class="calendar monthview"><div class="views-field views-field-title"><span class="field-content">' + content + '</span></div><div class="cutoff" /></div></div></div>');
}
console.log("Last: " + last + " <br /> Lesson: " + lesson + " <br /> inv: " + inv + " <br /> test: " + test + " <br /> " + "Content: " + content);
});
});
好的,关于函数和 return 语句的基本内容是,如果您在函数中的任何一点调用 return,则在 return 语句之后该函数的任何代码都保留为不打算执行;
因此,对于 pMath1 函数,inv 的初始值 = 8;
如果您注意到 pMath1() 函数,
function pMath1 () {
if ( m10() == false && m5() == false && last !== test) {
return "Lesson " + lesson; // code execution stops here as return called
lesson++; // lesson value is not gonna increment
last = "lesson"; // neither last value will update
} else if ( m10() == false && m5() == true) {
return "Test " + test; // again, code execution stops here
test++; // test value will not increment
last = "test"; // neither this will be executed
} else if ( m10() == true ) {
return "Inv " + inv; // and here is our inv variable, it was 8, we are returning 8, not giving chance inv to increase as stated line below
inv++;
last = "inv";
} else {
console.log("pMath1 doesn't work");
}
}
因此,如果您按照我的意见进行操作,您就会知道该怎么做,但是,我正在调整 pMath1(),
function pMath1 () {
if ( m10() == false && m5() == false && last !== test) {
lesson++; // now lesson value will increase
last = "lesson"; // and this one will also execute
return "Lesson " + lesson; // and when we are done, we can return and halt execution here; by this time our variables are processed.
} else if ( m10() == false && m5() == true) {
test++;
last = "test";
return "Test " + test; // same approach again
} else if ( m10() == true ) {
inv++;
last = "inv";
return "Inv " + inv; // and here is our holy grail, we gave chance inv to increase first, now we are returning its incremented value. it will be no longer stick with 8.
} else {
console.log("pMath1 doesn't work");
}
}
好的,现在我们的 inv 变量不应该坚持使用 8,因为我们知道在哪里使用 return,你可以在 pMath2() 尝试同样的事情,因为它有同样的错误。玩得开心:)
正在尝试调试它,但它超出了我的范围。我正在为学校制定时间表,使用 jQuery 到 append()
HTML 到 Calendar Drupal module.
- 有测试、调查和教训。
- 每 5 节课测试一次,每 10 节课进行一次调查。
- 在星期一、星期三和星期五,你得到两个"things"(两节课,一个测试或一个调查,一个课和一个测试,或一个调查和一个课)
- 周二和周四,你只上一节课、一次考试或一次调查
- 它不是从第 1 课、测试 1 或 inv 1 开始,而是从第 72 课、测试 14 和调查 8 开始。
这是我的代码:
jQuery(document).ready(function($) {
/* Schedule */
last = "lesson";
lesson = 71;
test = 13;
inv = 7;
function m10() {
if (lesson % 10 == 0) {
return true;
} else {
return false;
}
}
function m5() {
if (lesson % 5 == 0) {
return true;
} else {
return false;
}
}
function pMath1() {
if (m10() == false && last !== "test") {
lesson++;
last = "lesson";
return "Lesson " + lesson;
} else if (m5() == true && last !== "test") {
test++;
last = "test";
return "Test " + test;
} else if (m10() == true && last == "test") {
inv++;
last = "inv";
return "Inv " + inv;
} else {
console.log("pMath1 doesn't work");
}
}
function pMath2() {
if (m10() == false) {
lesson++;
last = "lesson";
return "Lesson " + lesson;
} else if (m5() == true && last !== "test") {
test++;
last = "test";
return "Test " + test;
} else if (m10() == true && last == "test") {
inv++;
last = "inv";
return "Inv " + inv;
} else {
console.log("pMath2 doesn't work");
}
}
$(".view-id-school .single-day td:gt(6)").each(function() {
var datePrep = $(this).attr("data-date");
var dateSplit = datePrep.split("-");
var dateStr = new Date(dateSplit[0], dateSplit[1], dateSplit[2]);
var dateStr2 = new Date(2016, 12, 03);
var classN = $(this).attr("headers");
if (classN == "Monday" || classN == "Wednesday" || classN == "Friday") {
$(this).removeClass("no-entry");
var mathC = "M: " + pMath1() + ", " + pMath2();
} else if (classN == "Tuesday" || classN == "Thursday") {
$(this).removeClass("no-entry");
var mathC = "M: " + pMath1();
} else {
mathC = "";
};
content = mathC;
if (dateStr > dateStr2) {
$(this).find(".inner").empty().append('<div class="calendar monthview"><div class="views-field views-field-title"><span class="field-content">' + content + '</span></div><div class="cutoff" /></div></div></div>');
}
});
});
更新:问题是pMath1()总是returns "Inv 8"和pMath2()保持未定义
更新 2:好的,使用这段代码让它工作。特别感谢 Xufox and Rimon Habib 的所有帮助:
jQuery(document).ready(function ($) {
/* Schedule */
dateStr2 = new Date(2016, 12, 03);
last = "lesson";
lesson = 71; //Lesson you want to start on minus 1
test = 13; //Test you want to start on minus 1
inv = 7; //Investigation you want to start on minus 1
function m10 () { if ( lesson % 10 == 0) { return true; } else { return false; } }
function m10M1 () { if ( ( (lesson % 10) - 1) == 0 && last == "inv" ) { return true; } else { return false; } }
function m5 () { if ( lesson % 5 == 0) { return true; } else { return false; } }
function pMath1 () {
if ( m10M1() ) { //Check if Lesson is x1 (e.g. 81) and minus 1 from it
last = "lesson";
return "Lesson " + lesson;
} else if ( m10() == false && last !== "test") { //Add Lesson
lesson++;
last = "lesson";
return "Lesson " + lesson;
} else if ( m5() == true && last !== "test") { //Add Test
test++;
last = "test";
return "Test " + test;
} else if ( m10() == true && last == "test") { //Add Inv
inv++;
lesson++;
last = "inv";
return "Inv " + inv;
} else {
console.log("pMath1 doesn't work");
}
}
function pMath2 () {
if ( m10M1() ) { //Check if Lesson is x1 (e.g. 81) and minus 1 from it
last = "lesson";
return "Lesson " + lesson;
}else if ( m10() == false ) { //Add Lesson
lesson++;
last = "lesson";
return "Lesson " + lesson;
} else if ( m5() == true && last !== "test") { //Add Test
test++;
last = "test";
return "Test " + test;
} else if ( m10() == true && last == "test") { //Add Inv
inv++;
lesson++;
last = "inv";
return "Inv " + inv;
} else {
console.log("pMath2 doesn't work");
}
}
$(".view-id-school .single-day td:gt(6)").each(function () {
var datePrep = $(this).attr("data-date");
var dateSplit = datePrep.split("-");
var dateStr = new Date(dateSplit[0], dateSplit[1], dateSplit[2]);
var classN = $(this).attr("headers");
if ( classN == "Monday" || classN == "Wednesday" || classN == "Friday") {
$(this).removeClass("no-entry");
var mathC = "M: " + pMath1 () + ", " + pMath2 ();
} else if (classN == "Tuesday" || classN == "Thursday") {
$(this).removeClass("no-entry");
var mathC = "M: " + pMath1 ();
} else {
mathC = "";
};
content = mathC;
if ( dateStr > dateStr2 ) {
$(this).find(".inner").empty().append('<div class="calendar monthview"><div class="views-field views-field-title"><span class="field-content">' + content + '</span></div><div class="cutoff" /></div></div></div>');
}
console.log("Last: " + last + " <br /> Lesson: " + lesson + " <br /> inv: " + inv + " <br /> test: " + test + " <br /> " + "Content: " + content);
});
});
好的,关于函数和 return 语句的基本内容是,如果您在函数中的任何一点调用 return,则在 return 语句之后该函数的任何代码都保留为不打算执行;
因此,对于 pMath1 函数,inv 的初始值 = 8;
如果您注意到 pMath1() 函数,
function pMath1 () {
if ( m10() == false && m5() == false && last !== test) {
return "Lesson " + lesson; // code execution stops here as return called
lesson++; // lesson value is not gonna increment
last = "lesson"; // neither last value will update
} else if ( m10() == false && m5() == true) {
return "Test " + test; // again, code execution stops here
test++; // test value will not increment
last = "test"; // neither this will be executed
} else if ( m10() == true ) {
return "Inv " + inv; // and here is our inv variable, it was 8, we are returning 8, not giving chance inv to increase as stated line below
inv++;
last = "inv";
} else {
console.log("pMath1 doesn't work");
}
}
因此,如果您按照我的意见进行操作,您就会知道该怎么做,但是,我正在调整 pMath1(),
function pMath1 () {
if ( m10() == false && m5() == false && last !== test) {
lesson++; // now lesson value will increase
last = "lesson"; // and this one will also execute
return "Lesson " + lesson; // and when we are done, we can return and halt execution here; by this time our variables are processed.
} else if ( m10() == false && m5() == true) {
test++;
last = "test";
return "Test " + test; // same approach again
} else if ( m10() == true ) {
inv++;
last = "inv";
return "Inv " + inv; // and here is our holy grail, we gave chance inv to increase first, now we are returning its incremented value. it will be no longer stick with 8.
} else {
console.log("pMath1 doesn't work");
}
}
好的,现在我们的 inv 变量不应该坚持使用 8,因为我们知道在哪里使用 return,你可以在 pMath2() 尝试同样的事情,因为它有同样的错误。玩得开心:)