使用javascript查找动态添加的标记

时间:2010-04-02 16:04:57

标签: javascript dynamic-data traversal

我正在尝试查看如何找到在表中动态添加的标记,如下所示:

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

我如何才能在 javascript 中找到该标记,而不是倾向于使用jquery所以请不要直播建议请...尝试在严格的javascript中找到新标记。

我指的是 span 标记

3 个答案:

答案 0 :(得分:2)

您可以在创建新标记时为其添加ID:

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

然后,只需使用该ID即可找到它:

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

答案 1 :(得分: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
    }
}

答案 2 :(得分:1)

这取决于元素中存在的其他元素。例如,您可以获取元素中的所有span标记,并过滤掉具有特定类名称的标记:

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]);
}

如果元素中只有一个带有该类名称的span标记,则filtered数组现在包含对该元素的引用。