Получить доступ к родительскому элементу в DOM из <script></script> не по его id.

  • Автор темы Автор темы Kirs
  • Дата начала Дата начала

Kirs

Fireman
Получить доступ к родительскому элементу в DOM из <script></script> не по его id.

Здравствуйте.

Подскажите пожалуйста, кто знает, как возможно (или возможно ли) получить ссылку на родительский элемент из JS блока, без прямого обращения к нему по его id (для абстрагирования от родителя) т.е.:

Код:
<div id="d1">
    <div id="d2">
        <script>
            // Отсюда надо получить ссылку на родительский элемент "d1",
            // но не используя getElementById()...
        </script>
    </div>
</div>
 
Kirs
не обращайся к родительскому, обращайся к d2, потом parentNode
 
BRat
Ну так я же говорю - хочу абстрагироваться от родителя, чтобы не раздавать лишние идентификаторы элементам ( которым они впринцепе не нужны) только для прямого доступа к ним.
 
Kirs
хм, ну сделай <script id="script1"> </script>
Получай ссылку на него, и работай уже с ней. Абстрагируешься от html-кода
 
BRat
Разумно... но в том-то и дело, что приходится раздавать идентификаторы, которые впринципе не нужны. Хочется сделать конструкцию обработки зависимую только от запущеной функции func(); которая обрабатывает обрасть, в которую вставлена нужным алгаритмом, т.е. страница может выглядеть так:
Код:
...
<div><script>func(..);</script></div>
...
<div><script>func(..);</script></div>
...

Сколько не искал, не нашел такого метода (как ссылка "this" в вызове из тэга) для такого случая как у меня.
Надеюсь, что просто плого искал...
 
Kirs
хм, ну при таком раскладе - чем document.write не устраивает?
 
проблема высосана из пальца.

> в том-то и дело, что приходится раздавать идентификаторы, которые
> впринципе не нужны.

ты уже тут написал сам несколько раз для чего они нужны.
вот их и используй.

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

neko
можно конечно отмотать последний элемент из тех что браузер уже успел создать
Не подскажеш, каким методом?

Насчет того,что
проблема высосана из пальца.
Впринципе да, но мне, например удобно пользоваться конструкцией <tag onmouseover="func(this);">...</tag>, где я могу обработать, элемент и его окружения общим для всех алгаритмом. Только сейчас мне понадобилось сделать такую обработку при загрузке этого элемента, а параметра "onload" для элементов, кроме body нет. При XHTML и CSS верстке я пытаюсь таким образом уйти от излишних конструкций, преложив это работу на JS.
 
Не подскажеш, каким методом?
я уже все написал.
что именно непонятно?

например FF создает элементы один за другим и сразу обновляет document.
т.е. самая последняя нода всегда будет содержать твой script.
как там с другими браузерами я незнаю, выясняй сам.
 
Kirs
Может XPath выражения спасили бы отца русской демократии? Сам сейчас озадачен схожей задачей. Вот чего надумал и думаю до сих пор http://phpclub.ru/talk/showthread.php?s=&postid=677519
 
Сверху