Скрытое поле ввода отсутствует в DOM?

#javascript #jquery #html #dom

#javascript #jquery #HTML #dom

Вопрос:

У меня проблема, смущающая проблема с тем, что скрытое поле не является частью DOM; по крайней мере, я не могу найти его с помощью JavaScript. Поле имеет атрибуты «id» и «name», оно находится в форме, имеет значение и его можно увидеть при просмотре источника просмотра в браузере. Итак, я прикрепляю обработчик щелчка к кнопке, который ищет скрытое поле, используя либо document.getElementById, либо используя селекторы jquery (любую комбинацию селекторов, по идентификатору, по имени класса и т.д.), И это не является частью DOM. Как это возможно, или это вообще возможно? Что может быть причиной, если это?

Редактировать: Разметка огромная, поэтому я не хотел вставлять ее сюда. Мой вопрос был в основном, возможно ли, чтобы скрытое поле отсутствовало в DOM. Почему люди против этого? Это некорректный вопрос?

Комментарии:

1. Пожалуйста, поделитесь разметкой. Нарушенная разметка, безусловно, может быть одной из причин.

2. Что-то написано с ошибкой? Опечатка? Отсутствует часть тега? Неправильный синтаксис? Проходит ли оно проверку ? Все это просто догадки, не видя никакого вашего фактического кода.

3. Разметка и Javascript определенно помогут. Все остальное, что мы можем вам предложить, — это просто предположение.

Ответ №1:

Возможно, поле было удалено, viewsource браузера не заботится об изменениях DOM (это просто ответ, который он получает от сервера).
Используйте, например, HTML-вкладку firebugs для проверки текущего DOM.

Комментарии:

1. Ага, вы правильно догадались, что-то удаляет скрытое поле, я только что подтвердил это, на одной странице оно есть, а на другой нет.

Ответ №2:

Это возможно, если ваш код javascript выполняется как есть, т. Е. не внутри события DOM ready, а как в обычном потоке документа. Если ваш код javascript размещен над html, который объявляет это скрытое поле, то браузер выполнит javascript до того, как получит возможность создать элемент. Вы можете увидеть это в view source, потому что к тому времени браузер отрисовал все.

Итак, я вслепую предполагаю, что ваш js-код НЕ находится внутри события DOM ready. Я вполне могу ошибаться. Пожалуйста, разместите минимально возможную html-разметку и css и javascript, которые будут воспроизводить эту проблему. Вы можете использовать jsfiddle.net хочет поделиться кодом с нами…