Я новичок здесь и ценю несколько советов по этой проблеме, которые я пытаюсь выяснить.Я понимаю, что, возможно, есть лучшие способы сделать это без использования конструктора объектов, но я работаю над тем, чтобы лучше понять объекты.У меня вопрос, есть ли что-то вроде this.function, которая ссылается на все другие объекты, которые не вызывали мою функцию.Вот что я пытаюсь сделать:
<!doctype HTML>
<html>
<head>
<title>Test</title>
<style type="text/css">
a {
text-decoration: none;
color: black;
}
a:visited {
text-decoration: none;
color: black;
}
</style>
</head>
<body>
<ul>
<li><a href="#" id="one"> Test</a> </li>
<li><a href="#" id="two"> Test again</a> </li>
<li><a href="#" id="three">Tester </a></li>
<li><a href="#" id="four"> Testify</a> </li>
</ul>
<script>
var first = document.getElementById('one');
var second = document.getElementById('two');
var third = document.getElementById('three');
var fourth = document.getElementById('four');
var colorChange = function(theID) {
this.id = theID;
this.formatContent = () => {
this.id.style.color = "red";
};
}
test = new colorChange(first);
testAgain = new colorChange(second);
tester = new colorChange(third);
testify = new colorChange(fourth);
function createEventListeners() {
if (first.addEventListener) {
first.addEventListener("click", test.formatContent, false);
}
if (second.addEventListener) {
second.addEventListener("click", testAgain.formatContent, false);
}
if (third.addEventListener) {
third.addEventListener("click", tester.formatContent, false);
}
if (fourth.addEventListener) {
fourth.addEventListener("click", testify.formatContent, false);
}
}
function init() {
createEventListeners();
}
if (window.addEventListener) {
//call init() on page load
console.log("> Adding TC39 Event Listener...");
window.addEventListener("load", init, false);
} else if (window.attachEvent) {
console.log("> Adding MS Event Listener...");
window.attachEvent("onload", init);
}
</script>
</body>
</html>
Вы заметите, что при нажатии на один из элементов li он изменит свой цвет на красный.Проблема в том, что это не понятно, когда вы нажимаете другой li.Я думал, что я могу просто сказать браузеру изменить все другие объекты на черный при запуске formatContent ().Есть простой способ сделать это?
Вот ручка, если нужно: https://codepen.io/seanbarker182/pen/JexPVz
Спасибо за любую помощь заранее!