<div id = "a">
<div id = "b">
<script type = "text/javascript">
var MyDiv1 = GetMyOwnDiv();
</script>
</div>
<div id = "c">
<script type = "text/javascript">
var MyDiv2 = GetMyOwnDiv();
</script>
</div>
</div>
MyDiv1 должен содержать DOM-часть div id = "a", а MyDiv2 - DOM-часть id = "b". Так что мне не нужны аргументы, чтобы получить это, как функция / объект "this ()" или "self ()".
Кстати. функция для получения дочернего тега «script», являющегося частью кода javascript внутри тега сценария.
Обновлено: более подробный пример.
//---Global loaded script in HEAD---
function LoadAsyncScript(){
//.....
var TScriptData = xmlhttp.responseText;
var TAppID = G_UNIQUEID;
var TScript = document.createElement('script');
TScript.setAttribute('type', 'text/javascript');
TScript.innerHTML = TScriptData;
document.getElementById('div_main').insertAdjacentHTML('beforeend', '<div id = "_' + TAppID + '_app" style = ""></div>');
var TApp = document.getElementById('_' + TAppID + '_app');
TApp.dataset['appid'] = TAppID;
TApp.appendChild(TScript);
//.....
};
function CloseApp(V_AppID){
var TMyAppDiv = document.getElementById('_' + V_AppID + '_app');
TMyAppDiv.removeChild(TMyAppDiv);
};
//---END OF Global loaded script in HEAD---
//Async loaded and "appendChild" script part
function OnClick_Callback(){
var TMyDiv = GetMyDivOfThisFunction();
CloseApp(TMyDiv.dataget['appid']);
};
//......
Как я могу получить эту работу?
Большое спасибо.
document.currentScript.parentNode@rmn ... звучит хорошо, но я получил "null" обратно в "document.currentScript"
@Chris G ... это довольно сложно ... но ... я загружаю скрипты async и хочу удалить его, включая удерживающий div скрипта
@xunwichtig document.currentScript вернет узел только во время начальной обработки. Это не будет работать в обратных вызовах. Если вам нужно удалить тег скрипта, почему бы не присвоить ему id и жестко закодировать строку? Кроме того, если вы делаете это, чтобы люди не смотрели на ваш сценарий, обратите внимание, что они все еще могут.
@xunwichtig Видите, это проблема XY. Знал это. В любом случае, у вас есть var TScript = document.createElement('script');, причем TScript является прекрасной ссылкой на тег <script>. Все, что вам нужно сделать, это превратить его в глобальную переменную.
@Chris G ... currentScript: ааа ... ок;) id: ну ... я не знаю, сколько скриптов будет загружено ... ну ... это больше похоже на ОС с приложениями, которые загружаются динамически включая окна приложений и так далее ... и я не хочу передавать много идентификаторов всем функциям, обратным вызовам и запросам внутри скриптовых структур ... итак. простой и "хорошо выглядит" способ решить эту проблему - получить родительский элемент dom сценария для удаления, легко удалить область сценария и его дочерние элементы html, без использования всех элементов dom для поиска всех частей из этого.
Итак, после загрузки страницы вы выбираете некоторый javascript через ajax и помещаете их в динамически созданные теги script и добавляете их в динамически созданные теги div, которые затем добавляете к тегу div, который был создан во время загрузки страницы, верно?
ну ... да ... при загрузке страницы я добавляю в голову какой-то скрипт для управления ... это управление может динамически загружать скрипт через ajax с сервера (по запросу пользователя (нажмите кнопку)), а затем помещает его описанным вами способом на странице ... все верно.



![Безумие обратных вызовов в javascript [JS]](https://i.imgur.com/WsjO6zJb.png)


Есть два способа получить объекты Dom элемента Html.
Assume для Div с id = "a"
Кордиэлемент
Где id = "contents" в его HTML?
@ N.Anouar ... спасибо, но я не могу использовать JQuery и .. первый способ нужен "аргумент", например "содержимое" ... и у меня нет аргумента;)
Вы можете пометить Div с помощью классов CSS для тега, для основного div - класса maindiv, для дочернего div - класса childdiv и использовать ближайшую функцию для поиска предыдущего родителя.
var $ divparent = $ ('# b'). ближайший ('. childdiv'); если ($ divparent) .length) {var MyDiv1 = $ divparent; } еще {var MyDiv1 = $ ('# b'). closest ('. maindiv'); }; var $ divparent = $ ('# c'). ближайший ('. childdiv'); если ($ divparent) .length) {var MyDiv1 = $ divparent; } еще {var MyDiv1 = $ ('# c'). closest ('. maindiv'); };
@ N.Anouar ... "ближайший" подразумевает возможность получения неверных результатов. Так что это не вариант. И, кроме того .. нужен аргумент;)
Если ближайший не является функциональным, зациклить элементы Dom и получить html, используя каждую функцию.
$ ('. класс'). each (function (i) {var Domelemnt = $ (this) .html ();});
Вопрос: Почему тебе это надо? Пахнет XY проблема. Можете ли вы рассказать нам, какова ваша настоящая цель? Потому что я не думаю, что есть простой способ сделать это, да и вообще он кажется совершенно ненужным.