2013-02-13 2 views
0

Например,Как получить родительский div скрипта?

<body> 
    <div id="cant_set_id" class="cant_set_class"> 
    </div> 
    <div> 
     <script id="cant_set_id"> 
      thisDivElement = // How to get a handle to this parent div 
     </script> 
    </div> 
</body> 

Я чувствую, что не хватает основополагающую немного JavaScript знаний здесь; Тем не менее, я никогда не нуждался в этом до сих пор. Как скрипт в этом div получает дескриптор div, когда ни один из них и div + скрипт не могут быть расположены где-либо в DOM?

+0

Я бы просто использовал идентификатор и доступ это позже, используя это. Во время выполнения этого сценария элемент DOM для 'div', о котором идет речь, даже не полностью сконструирован, попытка доступа к нему просто кажется неправильным. – millimoose

+0

Думаю, вы могли бы проверить DOM в своем скрипте, найти последний лист div и динамически добавить его id или класс, который вы могли бы использовать позже. Боюсь, это просто случайные мысли. Я не знаю, будет ли это работать. – jbl

+0

Спасибо всем. Кто-то указал мне на дублирующую проблему. В нем описывается, как использовать поведение JavaScript для получения дескриптора элемента последнего запуска/текущего скрипта, что делает получение его родительским простым. – 2013-02-13 22:47:43

ответ

1

Есть несколько способов сделать это:

  1. Помещенный идентификатор на тэгом и затем посмотреть, что идентификатор и его родителей.
  2. Используйте document.write() из сценария, чтобы написать div с известным идентификатором, а затем искать его.
  3. Найдите теги сценария в документе и найдите тот, у кого есть соответствующее свойство .src.
  4. Поскольку скрипты анализируются/выполняются по порядку (если не отложить или асинхронно или динамически вставлено), текущий исполняемый тег скрипта является последним, что в документе до сих пор, так что если вы делаете document.getElementsByTagName("script"), текущий исполняемый тег скрипта будет быть последним в этом списке.

Пример варианта 1:

<body> 
    <div id="maybe_not" class="probably_not"> 
    </div> 
    <div> 
     <script id="myScript"> 
      var parentDiv = document.getElementById("myScript").parentNode; 
     </script> 
    </div> 
</body> 

Работа демо варианта 1: http://jsfiddle.net/jfriend00/LCuNq/

Пример варианта 2:

<body> 
    <div id="maybe_not" class="probably_not"> 
    </div> 
    <div> 
     <script> 
      document.write('<div id="myScriptDiv"></div>'); 
      var parentDiv = document.getElementById("myScriptDiv").parentNode; 
     </script> 
    </div> 
</body> 

Работа демо Вариант 2: http://jsfiddle.net/jfriend00/8YwYN/

Смежные вопросы