2010-04-02 2 views
1

Я пытаюсь понять, как найти тег, который был добавлен динамически в таблице, так:Найти динамический добавленный тег с JavaScript

ParentTag= document.getElementById('parentdiv'); 
var newTag = document.createElement('div'); 
newTag.innerHTML="<span class="ImNew"></span>" 
ParentTag.appendChild(newTag); 

Как я смогу найти этот тег в Javascript , не наклоняясь к использованию jquery, так что нет live рекомендаций пожалуйста. Попытка найти этот новый тег в строго javascript.

Тег Я имею в виду это оболочка тег

ответ

1

Это зависит от того, какие элементы существуют в элементе. Например, вы можете получить все тег пролетных в элементе и отфильтровать те, с определенным именем класса:

var parentTag = document.getElementById('parentdiv'); 
var spans = parentTag.getElementsByTagname('SPAN'); 
var filtered = []; 
for (var i=0; i<spans.length; i++) { 
    if (spans[i].className === 'ImNew') filtered.push(spans[i]); 
} 

Если есть только один пролет теги с этим именем класса в элементе, то filtered массива Теперь cotnains ссылку на этот элемент.

+0

хорошо, когда я смотрю на источник представления, что добавленного элемента span нет, но содержимое внутри него отображается на странице, так что вы уверены, что я смогу найти он просто пересекает теги span – Jake

+0

@ Jake, это ваш браузер, показывающий вам источник страницы, а не текущее содержимое DOM. Если вы вставили его, он будет там. –

+0

Вы можете использовать Firebug, чтобы увидеть фактическое содержимое DOM в реальном времени, что было бы большой помощью. –

2

Вы могли бы дать ваш новый тег идентификатор при ее создании:

ParentTag= document.getElementById('parentdiv'); 
var newTag = document.createElement('div'); 
newTag.setAttribute('id','myNewID'); 
newTag.innerHTML="<span class="ImNew"></span>" 
ParentTag.appendChild(newTag); 

Тогда позже, просто использовать этот идентификатор, чтобы найти его :

var newTag = document.getElementById('myNewID'); 
+0

извините, если я вводит вас в заблуждение, но я бы попытался найти этот тег span – Jake

+0

ОК, на этом не было ясно. Можете ли вы по-прежнему использовать ту же методику нахождения ее по идентификатору, или это не подходит для ваших нужд? –

+0

нет, id не годится в этой ситуации – Jake

1

Как уже упоминалось, почему не только следить за ним или дать ему id, если вы будете нуждаться в этом позже?

Но так или иначе, вы можете выполнить ручной поиск (поиск по назад, когда вы добавляете новые элементы в конец).

var parent = document.getElementById("parentdiv") 
for (var i = parent.childNodes.length - 1; i >= 0; i--) 
{ 
    var el = parent.childNodes[i]; 
    if (el.nodeType == 1 && 
     el.nodeName.toLowerCase() == "div" && 
     el.firstChild && 
     el.firstChild.nodeName.toLowerCase() == "span" && 
     el.firstChild.className = "ImNew") 
    { 
     // el.firstChild is what you want 
    } 
} 
Смежные вопросы