我正在使用Web服务查询票务界面并撤回在任何时间点打开的所有支持票证,将它们显示在iframe中作为我们Web应用程序一部分的漂亮整齐的表格中。我的应用程序是用PL / SQL编写的,但我使用它来构建我的HTML页面和我的iframe中显示的内容。我的主要问题是因为门票是由电子邮件内容组成的,所以在电子邮件内容的顶部包含了大量无用的垃圾(主要是标签)和不相关的文本,导致我的界面看起来没用。
在我的代码中,我在ID为“ticketsTable”的表中包含了我需要的主要内容区域,并希望删除iframe表中之前发生的任何元素或内容。
通常我会使用jQuery来完成这项任务:
$("#earliercontent").nextUntil("#ticketsTable").andSelf().remove();
但是,我们的系统是使用ExtJS构建的,因此我们希望避免jQuery库在此环境中可能导致的任何潜在冲突。因此,我需要一种方法来处理和循环遍历iframe的内容,删除在ticketTable id之前出现的所有元素和文本,从而消除所有不必要的内容。
我已经尝试过了:
var last = null;
var curr = $('#page1');
while (curr.attr('id') != 'ticketsTable') {
if (last != null) {
last.remove();
}
last = curr;
curr = curr.next();
}
if (last != null) {
last.remove();
}
来源:jQuery remove all elements until id='whatever' found
但是,由于电子邮件内容是可变的,因此我没有指定脚本开始的特定ID标记。因此,我可以使用另一种方法(没有库,只有纯JavaScript)来删除ticketTable之前的所有元素和内容吗?
我必须强调ticketTable的内容必须保持不变。只有在我想要移除的身体内部之前发生的内容。
答案 0 :(得分:1)
var parent = document.getElementById("parent");
var stopID = "stop";
var length = parent.childNodes.length, j = 0;
for(var i=0; i < length; i++){
if(parent.childNodes[j].id != stopID){
parent.removeChild(parent.childNodes[j]);
}
else{
j++;
}
}
删除子节点时,数组会被移位,所以如果你需要删除两个第一个节点,那么你可以两次调用removeChild作为索引0。