我正在忙着制作一个JavaScript代码,允许我将GUI页面元素设置为具有自定义上下文菜单,当我考虑检查元素是否存在以便为其创建上下文菜单时。
function element_exists(el){
var tagName=el.tagName;
var exists=0;
for(var a=0;a<document.getElementsByTagName(tagName).length;a++){
if(document.getElementsByTagName(tagName)[a]==el){
exists=1;
}
}
return exists;
}
在这段代码中,我传递了一个DOM元素对象的引用(它是从前面存储的)。 让我们说它已存储,但从那时起我从文档中删除了元素本身。
我正在使用Chrome Canary,即使我通过控制台编辑页面并使用完全相同的标记名称和ID创建新元素,它也会返回false。如果它具有相同的innerText和innerHTML,它会返回true吗?
如果没有,这是所有网络浏览器(旧的和新的)的标准吗? 只是好奇,因为如果它们都是唯一的,我可以删除一些不必要的代码。
答案 0 :(得分:1)
我很确定答案是否定的;每个元素都是唯一的,无论它们是否具有相似的值(包括“id”)。
这可以让您深入了解元素垃圾收集在Chrome中的工作原理。我不确定其他浏览器是如何回应的。
http://www.html5rocks.com/en/tutorials/memory/effectivemanagement/
它概述了一些可能对测试你的理论有用的工具。