Может ли JavaScript выбрать объект, не отображаемый в DOM? - PullRequest
8 голосов
/ 17 февраля 2011

Это действительно быстрый вопрос :)

Просто интересно, здесь возможно ли для javascript выбирать объекты, которые не являются частью DOM ... как выбор контента :after или :beforeсозданный CSS?

например ... если у меня есть div и я создаю поле через

div:after{
  content: '.';
  display: block;
  width: 200px;
  height: 200px;
  background: green;
}

У меня все еще есть трудности, чтобы понять, как создаются эти элементы и так как они могут рисоватьэлементы на экране, но не являются частью DOM, означает ли это, что с ними невозможно взаимодействовать?

Приветствия

Ответы [ 2 ]

7 голосов
/ 17 февраля 2011

Нет, вы не сможете взаимодействовать с ними.

Они не являются частью DOM, а скорее являются проявлением назначенного стиля.

Если вам нужно добавить / удалить содержимое, вы можете использовать имена классов.

<div id='myElem' class='withAfter'>some content</div>
div.withAfter:after{
  content: '.';
  display: block;
  width: 200px;
  height: 200px;
  background: green;
}

Затем добавьте / удалите класс по мере необходимости.

2 голосов
/ 17 февраля 2011

Ознакомьтесь с документами , я вижу, что вы не можете изменять свойства напрямую, и при этом вы не можете взаимодействовать с контентом, созданным с помощью псевдоселекторов.Лучшее, что вы можете сделать, это взглянуть на свойства: http://jsfiddle.net/uaN6z/

Это выглядит примерно так:

window.getComputedStyle(document.getElementById('test'), ':after')

Единственный возможный способ изменить его - это изменить документтаблица стилей.Смотрите этот SO-ответ: Установка правил псевдокласса CSS из JavaScript

Удачи!

...