新的编码…我正在寻找一个功能删除元素的标签名称在html与Javascript?
我试图构建一个脚本,该脚本将清除html文档中的特定html标记(Table、td、tr),但一旦标记被删除,就会保存数据。 它将作为工作所需的一个非常特殊的文件清洗器。从html文档中删除所有表,然后粘贴到自定义编辑器中。我想从DOM中删除所有表元素,同时保留这些表的内容。因此,移除并保存它们内部的。每个HTML都会有很大的不同,问题的一部分是HTML并没有标准化,它们在格式上都有很大的不同新的编码…我正在寻找一个功能删除元素的标签名称在html与Javascript?,javascript,html,Javascript,Html,我试图构建一个脚本,该脚本将清除html文档中的特定html标记(Table、td、tr),但一旦标记被删除,就会保存数据。 它将作为工作所需的一个非常特殊的文件清洗器。从html文档中删除所有表,然后粘贴到自定义编辑器中。我想从DOM中删除所有表元素,同时保留这些表的内容。因此,移除并保存它们内部的。每个HTML都会有很大的不同,问题的一部分是HTML并没有标准化,它们在格式上都有很大的不同 <script> function WashElements() {
<script>
function WashElements() {
var list = document.getElementsByTagName("table");
list.removeChild(list.childNodes[0]);
}
</script>
<html>
<head>
<script type="text/javascript" src="script.js"></script>
</head>
<body>
<table id="toc" class="toc" border="1" summary="Contents">
<tr><td><p>This table is going</p></td></tr>
</table>
</body>
</html>
函数元素(){
var list=document.getElementsByTagName(“表”);
list.removeChild(list.childNodes[0]);
}
这张桌子快坏了
- 这里有一个小的html示例,它基本上就是我们要处理的。我们正在从一个浏览器窗口复制到另一个单独浏览器窗口上的编辑器中。我为我的第一个堆栈溢出问题不够清晰而道歉,你们都太棒了李>
// pass the cb() to save your data in your way, it can be an ajax call or use localStorage, caches etc
function clearDOMandDoStuff(cb) {
var elem = document.querySelector('YOUT_TAG'); // can be class, id, or tag
var data = elem.innerHTML; // let's say you wanna save html content
if (cb) {
cb(data);
}
elem.innerHTML = ''; // clear the element body
}
function saveData(data) {
if (window.localStorage) {
localStorage.setItem("mydata", data);
} else {
// call other saving functions
}
}
您可以将它们打包并放入代码中:
clearDOMandDoStuff(saveData);
这正是你所需要的。评论中的解释:
function parseHTML(html, elements){
// Parse the HTML
let parser = new DOMParser();
let htmlDoc = parser.parseFromString(html, "text/html");
// Loop through each element that should be removed
for(let i = 0; i < elements.length; i++){
// Get all elements that need to be removed
let element = htmlDoc.getElementsByTagName(elements[i]), index;
// Loop through each element
for (index = element.length - 1; index >= 0; index--) {
let parent = element[index].parentNode;
// Copy the contents of the element to be removed to its parent so it doesn't get lost
while( element[index].firstChild ) {
parent.insertBefore( element[index].firstChild, element[index] );
}
// Remove the element
element[index].parentNode.removeChild(element[index]);
}
}
// Save the result
let result = htmlDoc.documentElement.outerHTML;
// Show the result in the console
console.log(result);
}
// Array of elements to remove
const arr = ['table','tr','td'];
// HTML string to parse
const str = "<body><div><table><tr><td><p>test</p></td></tr></table></div></body>";
parseHTML(str, arr);
函数解析html(html,元素){
//解析HTML
让parser=newdomparser();
让htmlDoc=parser.parseFromString(html,“text/html”);
//循环遍历应删除的每个元素
for(设i=0;i=0;index--){
让parent=element[index].parentNode;
//将要删除的元素的内容复制到其父元素,以免丢失
while(元素[index].firstChild){
parent.insertBefore(元素[index].firstChild,元素[index]);
}
//移除该元素
元素[index].parentNode.removeChild(元素[index]);
}
}
//保存结果
让结果=htmlDoc.documentElement.outerHTML;
//在控制台中显示结果
控制台日志(结果);
}
//要删除的元素数组
常量arr=['table','tr','td'];
//要分析的HTML字符串
const str=“测试””;
parseHTML(str,arr);
请共享html代码列表
是一个HTMLCollection,不是元素,因此没有类似removeChild的元素方法
list[0]
将是找到的第一个表元素,因此list[0].removeChild(list[0].childNode[0])
可能就是您想要的。。。更简单的代码是list=document.querySelector('table')
,因为这样只会找到文档中的第一个表,其余的代码将在该表中工作。但是,如果要删除所有表的第一个子表。。。你需要遍历列表
并对列表中的每个条目执行removeChild如果你想将这些“粘贴”到编辑器中,需要提供更多具体的细节。我无法共享HTML代码,因为它是一个PDF文档,上面有法律信息。有1000个这样的pdf文档,我们正在批量导出为html,然后将它们复制到自定义编辑器中,以便在网站上发布。这是所有受保护的保密协议,但法律的东西,所以我不能分享确切的HTML。在这些文档中,我需要删除多个表。因此,我正在寻找一个getter,它可以获取带有表标记的所有元素,并在不删除表中数据的情况下删除它们,实际上保留了p标记并丢失了表。他希望被移除元素的内容保持完整。我还没有实际测试过它,但是如果我没记错的话,removeChild()
也会删除内容。我想你是对的,我会更新答案。在这种情况下,只需将innerHTML设置为空即可。谢谢