Javascript-форум (https://javascript.ru/forum/)
-   Events/DOM/Window (https://javascript.ru/forum/events/)
-   -   Как получит ссылку на элемент внутри которого запустили JS код? (https://javascript.ru/forum/events/21967-kak-poluchit-ssylku-na-ehlement-vnutri-kotorogo-zapustili-js-kod.html)

melky 01.10.2011 21:47

Цитата:

Сообщение от aRpi (Сообщение 129028)
<div>
<script type="text/javascript">
как отсюда получить ссылку на внешний div, внутри которого мы собственно запустили этот код?
</script>
</div>

Цитата:

Сообщение от Kolyaj (Сообщение 129092)
Самое правильное тут document.write, он для этого и придуман.

хм. не понял связи.

aRpi 01.10.2011 22:24

Другими словами, мне просто нужен тот элемент в который writeln и будет делать запись.

melky 01.10.2011 22:33

в моём коде все перед строчкой
div.onclick=function(){
....

aRpi 01.10.2011 22:41

Вот наконец то, сразу как то не догадался:
<script type="text/javascript">
	var getWriEle=function(){
		var scr = document.getElementsByTagName("script");
		var ele = scr[scr.length-1].parentNode;
		return ele;
	};
</script>


Всем спасибо!

Kolyaj 02.10.2011 10:08

Цитата:

Сообщение от melky
хм. не понял связи.

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

BETEPAH 02.10.2011 12:09

Цитата:

Сообщение от melky (Сообщение 129063)
// очевидно, что именно ЭТОТ скрипт будет последним.
var script = scripts[ scripts.length-1 ];

Будьте добры, объясните пожалуйста эту строчку.
Она же в обоих случаях указывает на последний тэг script. В таком случае почему это работает при клике на первом диве? Почему удаляется не последний элемент при клике на первом?

melky 02.10.2011 12:24

Цитата:

Сообщение от BETEPAH (Сообщение 129196)
Она же в обоих случаях указывает на последний тэг script

последний на текущий момент. вы ведь знаете, что на время обработки скрипта прорисовка страницы приостанавливается ?

доступнее обьяснит кто-то другой (Kolyaj, например:)). я не достиг этой стадии понимания

BETEPAH 02.10.2011 12:35

Цитата:

Сообщение от melky (Сообщение 129201)
последний на текущий момент. вы ведь знаете, что на время обработки скрипта прорисовка страницы приостанавливается ?

доступнее обьяснит кто-то другой (Kolyaj, например:)). я не достиг этой стадии понимания

Не надо доступнее, довольно понятно, спасибо ;)
Думал, может этот способ поможет решить мою проблему, но в таком случае не поможет :(

Не знаете, можно ли как-то обратиться из iframe к div, который обрамляет этот ифрэйм, без использования id и name?
Дело в том, что этот div создается периодически чатным движком и необходимо после отработки скрипта в загруженном iframe передавать результат в родительское окно.
<div><iframe src="./page.html" name="iframek" frameborder=0 width=5 height=5></iframe></div>
в фрейме скрипт наподобие этого
var iframes = window.parent.document.getElementsByName('iframek' );
iframes[iframes.length-1].parentNode.innerHTML='результат обработки скрипта во фрейме';
Вариант, в принципе работает, но хотелось бы узнать, нет ли более прямого пути к div'у.

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

Kolyaj 02.10.2011 12:53

Цитата:

Сообщение от BETEPAH
Не знаете, можно ли как-то обратиться из iframe к div, который обрамляет этот ифрэйм без использования id и name?

Код внутри iframe
function findIframeContainer() {
    var iframes = parent.document.getElementsByTagName('iframe');
    for (var i = 0; i < iframes.length; i++) {
        if (iframes[i].contentWindow == window) {
            return iframes[i].parentNode;
        }
    }
    return null;
}

Как-то так.

BETEPAH 02.10.2011 13:09

Цитата:

Сообщение от Kolyaj (Сообщение 129218)
Код внутри iframe
function findIframeContainer() {
    var iframes = parent.document.getElementsByTagName('iframe');
    for (var i = 0; i < iframes.length; i++) {
        if (iframes[i].contentWindow == window) {
            return iframes[i].parentNode;
        }
    }
    return null;
}

Как-то так.

Буду пробовать. Спасибо!


Часовой пояс GMT +3, время: 04:48.