Вопрос по js

вот есть у меня js файлик и несколько html доков к которому он приатачен, в файле есть 3 операции предположим:

Операция_над(голова)
Операция_над(тело)
Операция_над(ноги)

В первых двух html есть голова, тело, ноги
В последнем нет головы — соответственно js не исполняет 2 оставшихся операции

как бы решить эту проблему не создавая отдельный скрипт для отдельной странице, есть ли какие нить дерективы игнорирования ну или чё нить похожее, либо же проверять существует ли голова или нет

10 комментариев

  • аватар ololo
  • 0
Что такое голова? Без кода обсуждение может быть беспредметным, но я попробую.

Если я правильно понял, речь идёт о действиях с некими элементами, то можно присвоить им идентификаторы и прежде, чем совершать какие-то действия, искать элемент по известному айди. Если элемент не найден, то не делать ничего.
ну да так я и подумал в принципе, если есть вероятность, что элемента не будет на какой нить странице
вовка тебе уже все сказал, могу только чуть уточнить более удачный алгоритм. какой фреймворк будешь использовать, jQuery?
ну я так понимаю проще всего if ( $('body').length ) {… }
Андрюш, давай в скайпе, мне кажется, ты что-то путаешь.
  • аватар ololo
  • 0
После такой конструкции я понял, что я тебя неправильно понял. Приведи пример кода и раскрой задачу.
тьфу конечно же if ( $('#id').length ) {… }
Да, уже ближе но я бы рекомендовал немного изменить алгоритм.
Предположим у нас три функции или три блока инструкций, которые мы должны применить при загрузке страницы,

делаем привязку к событию загрузки страницы

$(function(){
что-то сделать с головой;
что-то сделать с телом;

что-то сделать с футером;
});

Элемента голова в одной из страниц вызова нет. Во-первых переносим код относящийся к голове в конец. Во-вторых перед этим кодом ставим проверку, но не на присутствие, а на отсутствие головы с вызовом оператора return

$(function(){
что-то сделать с телом;

что-то сделать с футером;
if (!$(голова).size()) {
return;
}
что-то сделать с головой;
});

Чем этот кусок отличается от вызова обработки головы внутри условного оператора. Множественные ветвления логических операторов сильно усложняют читаемость кода. Разумеется ничего ниже обработки головы быть не должно.
в чём различия?
if ( $('#id').length ) {… }
и
if (!$('#id').size()) {… }
Почитай внимательней, я об этом пишу в конце.
Я проверяю не наличие, а отсутствие блока. И в условном операторе не инструкции, а наоборот выход из функции. Множественные ветвления усложняют читаемость кода. Вместо впихивания кода для головы в блок условного оператора и поставил его ниже. А между size() и length никакой разницы, если ты про это. Тут кому что нравится.

Чтобы оставлять комментарии, нужно или зарегистрироваться.