Имеется таблица, x*y ячеек Необходимые для считывания данные в ячейках - только первый верхний ряд ячеек (обозначил td id='horizontal') и первый столбец (обозначил td id='vertical'), требуется по клику пользователя, что то вроде суммы координат только после второго клика (это или по вертикали, или по горизонтали) Нужно выделять только по одной ячейке в каждой области, а потом делать вычисление. Вот здесь все прекрасно работает, подсвечиваются только нужные ячейки при наведении мышки, и по вертикальным и по горизонтальным областям
$('#multitable').on('mouseenter', '#horizontal', function() {
$(this).addClass('hover');
}).on('mouseleave', '#horizontal', function () {
$(this).removeClass('hover');
});
$('#multitable').on('mouseenter', '#vertical', function() {
$(this).addClass('hover');
}).on('mouseleave', '#vertical', function () {
$(this).removeClass('hover');
});
А при кликах, корректно отрабатывает только на горизонтальной области (выделение по одной ячейке), по вертикальной предыдущее выделение так и остается, почему?
$('#multitable').on('click', '#horizontal', function() {
$(this).parent().children().removeClass('active hover');
$(this).addClass('active');
var_one = $(this).text();
});
$('#multitable').on('click', '#vertical', function() {
$(this).parent().children().removeClass('active hover');
$(this).addClass('active');
var_two = $(this).text();
});
А дальше тупик - как динамически писать в переменную сумму выделенных ячеек, каждый раз обновляя при клике?
Золотое правило скриптов...
«Не используйте скрипт, если то же самое можно запросто сделать на CSS»
(допустим вы хотите покрасить клетку в оражевый цвет при наведении), тогда:
<style> .hover:hover {background-color: orange;}</style>
Вот и всё. Эта строка эквивалентна вашему первому блоку скриптов...
Во вторых... id - уникальное имя элемента. На странице не может быть больше одного одинакового id! В противном случае браузер будет выделять только последнюю.
Ко всем клеткам, которые должны подсвечиваться при наведении курсора, нужно добавить class="hover"
... соответственно и в style записать то, что было выше.
А если нужно при клике на конкретную клетку - сделать её оранжевой, добавляем еще один класс, и тут уже реально нужен скрипт, это будет выглядеть так:
<style> .color {background-color: #f36700;} </style>
//При условии, что у всех клеток, которые могут быть кликнуты, уже заранее добавлен класс hover;
$(document).on('click','.hover',function(){
$('.hover').removeClass('color');
$(this).addClass('color');
});
Всего лишь при клике на любой hover, убираем цветной класс со всех hover на странице, после чего добавляем его на текущий кликнутый.
Если хочется, чтобы кликнутый класс не продолжал светится при наведении, можно чутка модифицировать:
$(document).on('click','.hover',function(){
$('.hover').removeClass('color');
$('.color').addClass('hover').removeClass('color');
$(this).addClass('color').removeClass('hover');
});
Демонстрасьон (JsFiddle)
Айфон мало держит заряд, разбираемся с проблемой вместе с AppLab
Пытаюсь реализовать приложение на ReactJS с использованием json-сервераЗахожу на localhost:3001 и localhost:3000 - пустота
Пытаюсь отправить форму через axios, судя по devtools форма уходит, все заголовки и request payload там есть, но в php файле принять данные не получаетсяМассив...
Проблема в том, что, когда вы вызываете figureBody[0]getAttribute('posX'), массив figureBody пустой, и figureBody[0] = undefined
При клике на кнопку в JSON должен записываться дополнительный объект, но получается что объект просто перезаписывается при клике сохраняя...