Вопрос по js
вот есть у меня js файлик и несколько html доков к которому он приатачен, в файле есть 3 операции предположим:
Операция_над(голова)
Операция_над(тело)
Операция_над(ноги)
В первых двух html есть голова, тело, ноги
В последнем нет головы — соответственно js не исполняет 2 оставшихся операции
как бы решить эту проблему не создавая отдельный скрипт для отдельной странице, есть ли какие нить дерективы игнорирования ну или чё нить похожее, либо же проверять существует ли голова или нет
Операция_над(голова)
Операция_над(тело)
Операция_над(ноги)
В первых двух html есть голова, тело, ноги
В последнем нет головы — соответственно js не исполняет 2 оставшихся операции
как бы решить эту проблему не создавая отдельный скрипт для отдельной странице, есть ли какие нить дерективы игнорирования ну или чё нить похожее, либо же проверять существует ли голова или нет
10 комментариев
Если я правильно понял, речь идёт о действиях с некими элементами, то можно присвоить им идентификаторы и прежде, чем совершать какие-то действия, искать элемент по известному айди. Если элемент не найден, то не делать ничего.
Предположим у нас три функции или три блока инструкций, которые мы должны применить при загрузке страницы,
делаем привязку к событию загрузки страницы
$(function(){
что-то сделать с головой;
что-то сделать с телом;
что-то сделать с футером;
});
Элемента голова в одной из страниц вызова нет. Во-первых переносим код относящийся к голове в конец. Во-вторых перед этим кодом ставим проверку, но не на присутствие, а на отсутствие головы с вызовом оператора return
$(function(){
что-то сделать с телом;
что-то сделать с футером;
if (!$(голова).size()) {
return;
}
что-то сделать с головой;
});
Чем этот кусок отличается от вызова обработки головы внутри условного оператора. Множественные ветвления логических операторов сильно усложняют читаемость кода. Разумеется ничего ниже обработки головы быть не должно.
if ( $('#id').length ) {… }
и
if (!$('#id').size()) {… }
Я проверяю не наличие, а отсутствие блока. И в условном операторе не инструкции, а наоборот выход из функции. Множественные ветвления усложняют читаемость кода. Вместо впихивания кода для головы в блок условного оператора и поставил его ниже. А между size() и length никакой разницы, если ты про это. Тут кому что нравится.