Поменять класс у выбранного элемента по клику
Подскажите что делаю не так:
<!DOCTYPE html>
<head>
<title></title>
</head>
<style>
.square {
width:200px;
height:200px;
background-color:yellow;
float: left;
margin-right: 25px;
}
.square-new {
width:300px;
height:300px;
background-color:red;
float: left;
margin-right: 25px;
}
</style>
<body>
<div id="ppp">
<div class="square"></div>
<div class="square"></div>
<div class="square"></div>
<div class="square"></div>
</div>
<script type="text/javascript">
new changeClass({el: '.square'});
function changeClass(el) {
this.el = document.querySelectorAll(el.el)
this.btPrev = document.querySelectorAll(el.el)
function deselectAll() {
this.el.classList.remove('.square-new ');
};
this.item = function() {
deselectAll();
this.el.classList.add('.square-new');
};
this.btPrev.addEventListener('click', this.item.bind(this));
};
</script>
</body>
</html>
|
Sevic,
нужен цикл по всем элементам, нет в js массивного назначения, типа querySelectorAll().addEventListener |
Sevic,
возможно вы изобретали делегирование |
Цитата:
|
Цитата:
|
Цитата:
|
можно все в одном
|
это хотите сделать?
у вас там ошибки еще в метод add и remove название класса без точек надо
<div id="ppp">
<div class="square">1</div>
<div class="square">1</div>
<div class="square">1</div>
<div class="square">1</div>
</div>
<script>
document.querySelector('#ppp').onclick = e => e.target.matches('.square') && e.target.classList.toggle('square-new');
</script>
|
поменять класс элемента по клику
Цитата:
<!DOCTYPE html>
<html>
<head>
<title></title>
</head>
<style>
#ppp{
display: flex;
}
.square {
width:100px;
height:100px;
background-color:yellow;
margin-right: 25px;
transition: 1s;
}
.square-new {
width:150px;
height:150px;
background-color:red;
margin-right: 25px;
}
</style>
<body>
<div id="ppp">
<div class="square"></div>
<div class="square"></div>
<div class="square"></div>
<div class="square"></div>
</div>
<script>
var fn = new changeClass({
el: ".square",
cls: "square-new"
});
function changeClass(el) {
var self = this;
self.el = document.querySelectorAll(el.el);
self.Prev = document.querySelector(el.el);
changeClass.prototype.select = function(elem) {
this.deselect();
this.Prev = elem;
this.Prev.classList.add(el.cls)
};
changeClass.prototype.deselect = function() {
this.Prev.classList.remove(el.cls)
};
changeClass.prototype.selectNum = function(num) {
this.select(this.el[num])
};
[].forEach.call(self.el, function(node) {
node.addEventListener("click", self.select.bind(self, node))
});
return self
}
window.setTimeout(function() {
fn.selectNum(2)
}, 1000);
window.setTimeout(function() {
fn.deselect()
}, 3000);
</script>
</body>
</html>
|
| Часовой пояс GMT +3, время: 21:35. |