Кристина, можете ловить событие на уровне формы. Меньше телодвижений внутри самого обработчика, но привязывать этот самый обработчик придется к каждой форме.
const forms = document.querySelectorAll('.pageForm');
for(const form of forms) {
form.addEventListener('click', function (event) {
if (event.target.className != 'link') return;
let validate = form.querySelectorAll('.data').forEach(val => {
if(val.value == '') {
val.style.border ="2px solid red";
return event.preventDefault();
} else val.style.border ="2px solid green";
});
});
}
bask, у меня две таблицы. В одной хранятся ссылки, в другой - параметры ссылок. У каждой ссылки могут быть разные параметры. ID - это ID ссылки из другой таблицы. А Name и Value - это параметры ссылки. Я хочу выбрать конкретный ID конкретной ссылки по заданному набору параметров. Чтобы гарантированно получить определенный ID, нужно искать по всем параметрам сразу, а не по какому-то одному. В этом и заключается проблема, т.к. один параметр - одна строка.
Конечно, можно сделать денормализацию и установить параметры ссылки в таблице ссылок, но это только на случай, если с нормализованной БД реализовать подобную операцию не удастся.
Антон Спирин, да, здесь в целом согласен, со статической проще вкатываться в проект, а новые разработчики с меньшей вероятностью натворят дел, т.к. у них банально будет меньше возможностей их натворить. Я написал все вышенаписанное к тому, что бороться с динамической типизацией вовсе ни к чему, при том, что автор пишет проект в одиночку. Ведь вместо этого ее можно понимать и использовать, или, как минимум, не позволять ей портить себе жизнь. Тем паче, что она дает порой невероятно красивые конструкции, например, const a = b || null или if(!property).
Антон Спирин, это все равно, как ни крути, вариация защиты от дурака. В целом, совершить ошибку со слабой типизацией не сложнее, чем забыть запятую или поставить "=" вместо "==". Да, можно стать джедаем, но можно быть внимательнее или попросить IDE подсвечивать "==" другим цветом.
Чтобы не было проблем с типизацией, стоит:
- использовать const так часто, как только можно
- одно свойство - одна переменная, избегать переопределения переменных далее по коду (в этом и помогает const)
- все свойства получать через геттеры, в геттерах отдавать корректные значения или null
- это же относится и к свойствам классов, реже использовать this.property, чаще - this.getProperty(), заодно можно заблокировать возможность некорректного случайного изменения this.property соотв. сеттером
- делать функции маленькими, чтобы в них было немного переменных
- давать переменным удобоваримые названия, в комментах помечать, какого они типа, код должен быть самодокументируемым
- в нужных местах проводить проверки, приводить к нужному типу явно: нужно число, используй parseInt и проверь, что parseInt вернула корректное число (в геттере или перед использованием)
В итоге, когда, например в PHP включаю строгую типизацию, для меня процесс разработки не меняется. Ошибок новых не возникает - ведь их и не было. А всего-то надо изначально писать код корректно.
> к глобальному объекту window
Window характерен только для браузера. Исправить можно, удаляйте этот плагин и идите юзать консоль в браузере. А то, боюсь, начнете пытаться обращаться к саблаймовому DOM, и проблем только прибавится.
А если пользователь изменит сохраненные права? Я, конечно, проверю, но поскольку рендеринг клиентский, юзер увидит админское меню перед запросом за данными. Не то чтобы это была дыра, но это некрасиво.
А зачем так извращаться? Кидайте в телегу ссылки на посты в WP. Так многие делают. Вообще не вижу проблемы. Ссылка на дубль контента, но с комментариями - имхо, глупость и не юзабельно. Что таког овы пишете, что пользователь настолько горит желанием откомментить скорее, что перейдет и напишет коммент?