Валентина, action="send.php" меняете на action="#" onsubmit="return sendPost();", а в конце функции sendPost перед закрывающей фигурной скобкой пишете return false;
Если этот модуль - просто один из сервисов проекта, то почему его надо оформлять как либу? Достаточно положить в src/UseCase и использовать где надо (следуя логике DDD). Нет?
Александр, обычно договор заключают сразу, испытательный срок - не помеха. Странновато... Но в любом случае, если вы шли на дизайнера, то шлите их лесом с таким подходом. А если вам говорили, что будете fullstack + designer, и вы согласились, то тогда не их косяк.
Как понимать фразу "всё знаю" и "хочу уловить саму суть"? Т.е. не знаете, ничего? Если знаете, как работает, как писать, как правильно делать вложенности, то неужели не поняли "суть"?
boga-net, ну если совсем примитивно, то можно и так
0. Добавили переменную инкремент типа var i = 0;
1. Кликнули (p / img) - запомнили элемент, увеличили i++, если i == 2, то сравнили
2. Кликнули другой элемент (p / img) - запомнили снова, увеличили i++, => if (i == 2) => сравнили
3. Сравнение - помимо сравнения, всегда обнуляем элементы и i
По хорошему, при клике на img надо блокировать следующие клики по img, чтобы можно было кликнуть только параграф после картинки. Либо при повторном клике на картинку, снимать выделение с первой картинки. Ну тут полно вариантов
boga-net, нет, не подойдет. Смотрите:
1. я кликнул картинку, параграф пустой - сравнение не запустилось, но и ошибки нет. ок.
2. я кликнул по параграфу (но от другой картинки) - сравнение запустилось, но вернуло false.
я не знаю, что у вас там внутри, но вам надо как организовать структуру DOM иначе. Например, если у вас один параграф и несколько картинок к нему, то слушайте клики только на картинки и сравнивайте их всегда с параграфом, который рядом.
action="send.php"
меняете наaction="#" onsubmit="return sendPost();"
, а в конце функции sendPost перед закрывающей фигурной скобкой пишетеreturn false;