Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/455.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/html/78.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
通过javascript删除上一个和下一个HTML元素_Javascript_Html - Fatal编程技术网

通过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

我想在使用鼠标通过javascript高亮显示所选文本后删除上一个和下一个HTML元素,但我只知道如何获取所选/高亮显示的文本,有人能帮我吗?多谢各位

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。不管怎样,我只是告诉你这个想法。你可以把它提高到理想状态。希望能有帮助。