Как получит ссылку на элемент внутри которого запустили JS код?
Здравствуйте! Не знаете?
Как получить элемент внутри которого был запущен JS код? Например: <div> <script type="text/javascript"> как отсюда получить ссылку на внешний div, внутри которого мы собственно запустили этот код? </script> </div> |
вообще, по-моему, никак. окно, в котором он запущен, он еще знает а вот див.. хм.
Опиши задачу, из-за который ты такой лапшекод городишь? вполне вероятно, что можно обойтись и без таких приемов. |
Подозреваю ОП хочет реализовать такой механизм:
- есть некий блок html, следом за ним идет код js - требуется применить в этом js некоторые действия непосредственно к предшествующему блоку - таких связок может быть несколько на странице и действия внутри каждой из этих связов могут отличаться в зависимости от сгенерированного js. Если закача такая, то как решение могу предложить поиск по имеющемуся DOM в обратном направлении, первый найденный блок html будет тот, что предшествует исполняемому в данный момент js-коду. |
если Js-код генерится, то что мешает генерить туда же айдишник предшествующего элемента? опять же, задачу в студию)
|
Хочу вызвав JS функцию создать свой элемент, расположенный в том же самом месте что и JS код, подобно writeln, только через DOM создавать буду.
|
Хочу без id обойтись
|
конечно, не знаю канает ли такое ну вроди бы должно канать:
document.div[0] где 0-это начальный масив элемента див... в отм случи если у тебя 1 див если код размещен во втором то будет 1 вместо 0 |
В каждом блоке <script> делать переменную с порядковым номером.
И при вызове определенного участка кода будет соответственно и переменная-айдишник будет инициализироватся, и в зависимости от значения этой переменной применять какие-то действия к блокам... Вот как-то так :) |
напишите примеры, показывающие на коде то, о чём вы говорите.
я думаю, что можно так скрипт. это находится сверху, потому что эта коллекция - живая. (если на страницу добавим скрипт - он сам тут появится)
// все скрипты на странице
var scripts = document.getElementsByTagName("script");
а это - внутри каждого DIV
// наш div.
var div;
// очевидно, что именно ЭТОТ скрипт будет последним.
var script = scripts[ scripts.length-1 ];
//относительно ЭТОГО скрипта ищем близлежащий div,
// который будет РОДИТЕЛЕМ для этого скрипта
div=script;
//поднимаемся до DIV
while( div.tagName!=="DIV" )
div=div.parentNode;
//div нашли. теперь деаем с ним, чо хотим
div.onclick=function(){
this.parentNode.removeChild(this);
}
ну и пример, конечно же.
<h1>При клике на DIV они будут скрываться</h1>
<script>
var scripts = document.getElementsByTagName("script");
</script>
<div>
Это дивчег первый.
<script>
// наш div.
var div;
// очевидно, что он будет последним.
var script = scripts[ scripts.length-1 ];
//относительно ЭТОГО скрипта ищем близлежащий div,
// который будет РОДИТЕЛЕМ для этого скрипта
div=script;
//поднимаемся до DIV
while( div.tagName!=="DIV" )
div=div.parentNode;
//div нашли. теперь деаем с ним, чо хотим
div.onclick=function(){
this.parentNode.removeChild(this);
}
</script>
</div>
<div>
Это дивчег второй.
<script>
// наш div.
var div;
// очевидно, что он будет последним.
var script = scripts[ scripts.length-1 ];
//относительно ЭТОГО скрипта ищем близлежащий div,
// который будет РОДИТЕЛЕМ для этого скрипта
div=script;
//поднимаемся до DIV
while( div.tagName!=="DIV" )
div=div.parentNode;
//div нашли. теперь деаем с ним, чо хотим
div.onclick=function(){
this.parentNode.removeChild(this);
}
</script>
</div>
|
Самое правильное тут document.write, он для этого и придуман.
|
| Часовой пояс GMT +3, время: 20:19. |