通过javascript删除上一个和下一个HTML元素
我想在使用鼠标通过javascript高亮显示所选文本后删除上一个和下一个HTML元素,但我只知道如何获取所选/高亮显示的文本,有人能帮我吗?多谢各位通过javascript删除上一个和下一个HTML元素,javascript,html,Javascript,Html,我想在使用鼠标通过javascript高亮显示所选文本后删除上一个和下一个HTML元素,但我只知道如何获取所选/高亮显示的文本,有人能帮我吗?多谢各位 function text() { if (window.getSelection) return window.getSelection(); if (document.getSelection) return document.getSelection(); if (document.s
function text() {
if (window.getSelection)
return window.getSelection();
if (document.getSelection)
return document.getSelection();
if (document.selection)
return document.selection.createRange().text;
return "";
}
function delete_Tag () {
var txt = text();
// txt already have the selected text
// I don't know how to do in here !!!
// I use the use the find the parentNode, but don't know how to delete the </span>
}
<input type='button' value='Delete Tag' onclick='delete_Tag ()' />
<p id='text'>
<span class="B">I am </span>
<span class="B">working in </span>
<span class="C">ABC company.</span>
</p>
函数文本(){
if(window.getSelection)
返回window.getSelection();
if(document.getSelection)
return document.getSelection();
if(文档选择)
return document.selection.createRange().text;
返回“”;
}
函数delete_标记(){
var txt=text();
//txt已包含所选文本
//我不知道在这里该怎么办!!!
//我使用查找父节点,但不知道如何删除
}
我是
工作于
ABC公司。
e、 g.我使用鼠标突出显示“在中工作”或“在中工作”(所选必须在中),然后单击按钮,它将显示
预期结果:
<p id='text'>
<span class="B">I am </span>
working in
<span class="C">ABC company.</span>
</p>
我是
工作于
ABC公司。
您可以使用Jquery隐藏方法 您可以使用以下内容:
var span = document.getElementsByClassName("B").item(0);
var parent = span.parentNode;
var sibling = span.nextSibling;
var textNode = document.createTextNode(span.innerHTML);
parent.removeChild(span);
parent.insertBefore(textNode, sibling);
删除元素似乎有困难,隐藏所选元素可能比使用jQuery更有效。您需要做一些额外的工作。您需要捕获document.body.onmousedown和document.body.onmouseup。如果此事件的目标是同一节点,则必须保存此节点以供进一步使用
我已经为您创建了谢谢您的回答,但是我想要的是基本的javascript,而不是jQuery和其他库。这个问题的难点是确定要删除的元素,所以这没有多大帮助hide
无论如何都不会删除元素,这将是remove
@Quentin:是的,它应该是remove
。我在谷歌上搜索Jquery是否有任何事件来获取突出显示的文本。但是John不想要Jquery。谢谢你的回答,但是我不知道如何将目标应用到我的案例中,你能解释更多吗?我已经更新了我的答案,使用delete_tag函数代替你的。同时手动传递e参数。请看更新后的帖子。它有效吗?好的,这是我的错误,我没有看到click事件是用于输入的,所以e.target是一个错误的目标。我将在几分钟后更新我的示例。谢谢您的回答,但是如果所有类都是=“B”,那么是否可以获得最接近的html元素而不是B[0]?谢谢我准备好了,下面是正确的代码,请在删除标签功能中使用它!:)如果我选择“在ABC中工作”,你期望的行为是什么?@Molecule,没有期望的行为,但代码不应更改。因此结果必须与“在ABC中工作”的结果相同,或者不必更改任何内容?如果选择“在ABC中工作”,则不应更改任何内容谢谢你的回答,但是我发现你的例子在这个网站上不起作用,你介意看看吗?@John,它在这个网站上很有效。如果看不到您的站点代码,我将无法提供帮助。我打开工作示例,然后用鼠标突出显示“正在工作”,然后单击按钮,我是否做错了什么?@John。该死,我没有检查“在工作”。但它适用于“工作中”、“工作中”等等。@John,我有我的脚本。但是它有一些bug。不管怎样,我只是告诉你这个想法。你可以把它提高到理想状态。希望能有帮助。