Мне нужна твоя помощь! Я хочу автоматический ввод текста и включение / выключение DarkMode. Я скопировал написание текста у другого разработчика. Но я создаю DarkMode в одиночку. Написание текста работало. DarkMode тоже. Но когда я использую оба на одной странице, один из них не работает. Я проверил все те же переменные, я даже добавил к переменным несколько нулевых значений, чтобы сбросить их. Или я пытаюсь использовать разные значения. Но ничего. Что с этим, пожалуйста?
Это JS:
//Check, if DarkMode is ON, or not
function getCookie(cname) {
var name = cname + " = ";
var decodedCookie = decodeURIComponent(document.cookie);
var ca = decodedCookie.split(';');
for(var i = 0; i <ca.length; i++) {
var c = ca[i];
while (c.charAt(0) == ' ') {
c = c.substring(1);
}
if (c.indexOf(name) == 0) {
return c.substring(name.length, c.length);
}
}
return "";
}
function checkCookie() {
var dmTheme = getCookie("darkmode");
if (dmTheme === "active") {
console.info("Darkmode is " + dmTheme);
$("#switching").prop("checked", true);
darkMode();
$("#switching").prop("checked", true);
} else {
console.info("Darkmode is " + dmTheme);
$("#switching").prop("checked", false);
}
}
//Reset variables
var i = null;
var c = null;
var name = null;
var ca = null;
//Writting text
var TxtType = function(el, toRotate, period) {
this.toRotate = toRotate;
this.el = el;
this.loopNum = 0;
this.period = parseInt(period, 10) || 2000;
this.txt = '';
this.tick();
this.isDeleting = false;
};
TxtType.prototype.tick = function() {
var i = this.loopNum % this.toRotate.length;
var fullTxt = this.toRotate[i];
if (this.isDeleting) {
this.txt = fullTxt.substring(0, this.txt.length - 1);
} else {
this.txt = fullTxt.substring(0, this.txt.length + 1);
}
this.el.innerHTML = '<span class = "wrap">'+this.txt+'</span>';
var that = this;
var delta = 200 - Math.random() * 100;
if (this.isDeleting) { delta /= 2; }
if (!this.isDeleting && this.txt === fullTxt) {
delta = this.period;
this.isDeleting = true;
} else if (this.isDeleting && this.txt === '') {
this.isDeleting = false;
this.loopNum++;
delta = 500;
}
setTimeout(function() {
that.tick();
}, delta);
};
window.onload = function() {
var elements = document.getElementsByClassName('typewrite');
for (var i=0; i<elements.length; i++) {
var toRotate = elements[i].getAttribute('data-type');
var period = elements[i].getAttribute('data-period');
if (toRotate) {
new TxtType(elements[i], JSON.parse(toRotate), period);
}
}
var css = document.createElement("style");
css.type = "text/css";
css.innerHTML = ".typewrite > .wrap { border-right: 0.08em solid #fff}";
document.body.appendChild(css);
};
Есть HTML-код для написания текста:
<div class = "heading">
<p class = "headP">Welcome, I am</p>
<h1>
<a href = "" class = "typewrite h11" data-period = "2000" data-type='[ "MartanKing.", "Fullstack Developer.", "Junior WebMaster.", "WebDesigner." ]'>
<span class = "wrap"></span>
</a>
</h1>
</div>
А для DarkMode:
<div class = "fdiv2">
<div class = "dark">
<p class = "fotxt2"><i class = "fas fa-adjust"></i> DarkMode</p>
<label class = "switch">
<input type = "checkbox" onclick = "darkMode()" class = "darktogg" id = "switching">
<span class = "slider round"></span>
</label>
</div>
Пожалуйста, мне очень нужна твоя помощь. Спасибо



![Безумие обратных вызовов в javascript [JS]](https://i.imgur.com/WsjO6zJb.png)


Похоже, вы забыли определить функцию
darkModeв этом коде. Таким образом,darkMode();выдаст ошибку, как и событие щелчка. Вы действительно хотелиonclick = "checkCookie()"?