getElementById Где элемент динамически создается во время выполнения

Я создал объект во время выполнения с помощью тега innerHTML, теперь я хочу получить доступ к этому элементу с помощью getElementById, когда я получил доступ к элементу, возвращающему его значение NULL. Пожалуйста, предложите мне любое направление, чтобы я мог достичь этого,

Вот следующая подсказка кода, которую я использую

В HTML

<div id="web">
<object id="test"></object>
</div>

В JS

document.getElementById("web").innerHTML="<object id='test2'></object>";
.
.
var obj = document.getElementById("test2");

Здесь obj возвращает нулевое значение.

 Sirko28 мар. 2012 г., 09:18
Некоторые фрагменты кода были бы полезны.
 lukas.pukenis28 мар. 2012 г., 09:21
Пожалуйста, используйте jsFiddle.net
 Elena28 мар. 2012 г., 09:21
Попробуйте использовать фрагмент кода из [здесь] [1] [1]:stackoverflow.com/questions/343145/...
 Siddiqui28 мар. 2012 г., 09:26
Пожалуйста, проверьте сейчас, я редактировал.

Ответы на вопрос(3)

Создать элемент

var element = document.createElement (tagName);

Добавьте это в дом

document.body.insertBefore (селектор, элемент);

или же

  document.getElementByID(selector).appendChild(element);

Больше информации здесь:MDN

Решение Вопроса

емент в дерево документа (используяappendChild или жеinsertBefore)? Пока элемент не вставлен в DOM, вы не можете получить его, используяdocument.getElementById.

Пример создания элемента:

var myDiv = document.createElement('div');
myDiv.id = 'myDiv';
document.body.appendChild(myDiv);
document.getElementById('myDiv').innerHTML = 'this should have worked...';

[редактировать] Учитывая предоставленный позже код, возникает третий вопрос: находится ли ваш скрипт в нижней части html-страницы (прямо перед закрытием</body> тег)? Если он находится в заголовке документа, возможно, ваш сценарий запущендо Дерево документа полностью отображается. Если ваш скрипт должен быть в заголовке документа, вы можете использовать обработчик загрузки для его запускапосле предоставление документа:

window.onload = function(){
  document.getElementById("web").innerHTML='<object id="test2"></object>';
  // [...]
  var obj = document.getElementById('test2');
};
 KooiInc11 июл. 2018 г., 10:26
Вы подчеркиваете мои знания здесь. Я очень мало знаю об Angular (и скорее хочу, чтобы так было;). Это может быть идея создать новый SO-вопрос для этого, возможно, ссылаясь на этот?
 Phalgun11 июл. 2018 г., 10:01
У меня есть сценарий, в котором я вызываю метод, предоставляемый третьей стороной (Angular File Saver -github.com/eligrey/FileSaver.js/blob/master/src/FileSaver.js), который создает элемент привязки, создает createObjectURL () и щелкает по нему без добавления в DOM. При попытке проверить это с помощью транспортира в приложении AngularJS я не могу найти динамически созданный элемент. Как бы вы предложили мне получить ссылку на этот якорный элемент, созданный Angular File Saver.
 Phalgun11 июл. 2018 г., 07:40
@kooilnc, где и как я могу найти динамически созданный элемент, который не был добавлен в DOM?
 KooiInc11 июл. 2018 г., 08:23
@Phalgun в памяти. В случае такого ответа вы можете обратитьсяmyDiv до тех пор, пока он не добавлен в DOM. Если этоявляется добавлено, что обычные методы DOM-поиска могут использоваться для извлечения и / или манипулирования им.

то НИКОГДА не нужно его снова искать сdocument.getElementById().

Правильно создав узел, вы можете сохранить ссылку на него в виде переменной javascript, которую можно использовать в любом месте области видимости.

Например:

window.onload = function(){
    var myDiv = document.createElement('div');
    document.body.appendChild(myDiv);

    //and now a function that's called in response to some future event
    function whatever(){
        ...
        myDiv.style.color = 'red';
        ...
    }
};

Примечание. Внутренняя функция (вызываемая в будущем) имеет доступ кmyDiv переменная, потому что внешняя функция образует «замыкание», внутри которого переменные остаются живыми и доступными, даже если внешняя функция завершена и возвращена.

 gumuruh16 июл. 2016 г., 22:34
эй @ Beetroot-Beetroot, ... Я думаю, это будет проблемой, если был создан только что созданный элемент, но мы не знаем ссылочную переменную. Как добиться этого getElementById () в любом случае? любая 3-я партия вводится или что-то в этом роде ....
 Variadicism11 окт. 2016 г., 18:34
Это не отвечает на вопрос. Лучше не предполагать ничего об их кодовой базе. Создание этого элемента может быть в части базы кода, недоступной для части, которая захватывает элемент. Даже если это доступно, пожалуйста, рассмотрите других, которые приходят на этот вопрос в поисках ответа на заданный вопрос, а не обходного пути, которое работает для этого конкретного человека.

Ваш ответ на вопрос