Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/448.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
如果所选文本是HTML,如何使用javascript获取所选DOM?_Javascript_Html_Dom - Fatal编程技术网

如果所选文本是HTML,如何使用javascript获取所选DOM?

如果所选文本是HTML,如何使用javascript获取所选DOM?,javascript,html,dom,Javascript,Html,Dom,有一个div在页面上显示HTML。 我可以使用 window.getSelection()返回节点列表。 还尝试了window.getSelection().toString()它返回字符串 我需要的是选择DOM而不是文本或节点列表。我想在仅使用javascript选择文本时添加数据子属性 因此,如果显示的文本是xyz,则在选择后应该变成xyz。您可以尝试这种方法。。(如果div中有direct text节点) 因此,您可以像 window.getSelection().focusNode.pa

有一个div在页面上显示HTML。 我可以使用
window.getSelection()返回节点列表。
还尝试了
window.getSelection().toString()它返回字符串

我需要的是选择DOM而不是文本或节点列表。我想在仅使用javascript选择文本时添加数据子属性


因此,如果显示的文本是
xyz
,则在选择后应该变成
xyz

您可以尝试这种方法。。(如果div中有direct text节点)

因此,您可以像

window.getSelection().focusNode.parentElement.setAttribute('data-id', 'id-1');
您可以使用当前div将其包装在“mouseup”事件中

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Document</title>
</head>
<body>
    <div id="myDiv">
        Lorem ipsum dolor sit amet, consectetur adipisicing elit. Id natus voluptatibus eum explicabo soluta excepturi?
    </div>
    <div id="myDiv2">
        Lorem ipsum dolor sit amet, consectetur adipisicing elit. Id natus voluptatibus eum explicabo soluta excepturi?
    </div>

    <script>
        var myDiv = document.getElementById('myDiv')
        myDiv.addEventListener('mouseup', function(){
            window.getSelection().focusNode.parentElement.setAttribute('data-id', 'id-1');
        })
    </script>
</body>
</html>

文件
Lorem ipsum dolor sit amet,奉献精英。这是一个明确的解决方案吗?
Lorem ipsum dolor sit amet,奉献精英。这是一个明确的解决方案吗?
var myDiv=document.getElementById('myDiv')
myDiv.addEventListener('mouseup',function(){
window.getSelection().focusNode.parentElement.setAttribute('data-id','id-1');
})
或者,如果有许多div,最好只将attr添加到选定的“div”中

var div = document.querySelectorAll('div')
for(var i = 0; i < div.length; i++){
    div[i].addEventListener('mouseup', function(){
     window.getSelection().focusNode.parentElement.setAttribute('data-id', 'id-1');
    }, false)
}
var div=document.querySelectorAll('div'))
对于(变量i=0;i
您可以尝试这种方法。。(如果div中有direct text节点)

因此,您可以像

window.getSelection().focusNode.parentElement.setAttribute('data-id', 'id-1');
您可以使用当前div将其包装在“mouseup”事件中

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Document</title>
</head>
<body>
    <div id="myDiv">
        Lorem ipsum dolor sit amet, consectetur adipisicing elit. Id natus voluptatibus eum explicabo soluta excepturi?
    </div>
    <div id="myDiv2">
        Lorem ipsum dolor sit amet, consectetur adipisicing elit. Id natus voluptatibus eum explicabo soluta excepturi?
    </div>

    <script>
        var myDiv = document.getElementById('myDiv')
        myDiv.addEventListener('mouseup', function(){
            window.getSelection().focusNode.parentElement.setAttribute('data-id', 'id-1');
        })
    </script>
</body>
</html>

文件
Lorem ipsum dolor sit amet,奉献精英。这是一个明确的解决方案吗?
Lorem ipsum dolor sit amet,奉献精英。这是一个明确的解决方案吗?
var myDiv=document.getElementById('myDiv')
myDiv.addEventListener('mouseup',function(){
window.getSelection().focusNode.parentElement.setAttribute('data-id','id-1');
})
或者,如果有许多div,最好只将attr添加到选定的“div”中

var div = document.querySelectorAll('div')
for(var i = 0; i < div.length; i++){
    div[i].addEventListener('mouseup', function(){
     window.getSelection().focusNode.parentElement.setAttribute('data-id', 'id-1');
    }, false)
}
var div=document.querySelectorAll('div'))
对于(变量i=0;i
“它返回节点列表”-它不返回
选择
对象吗?无论如何,如果用户选择了更大范围的文本,其中一些来自div,另一些来自div之前或之后的元素,您想怎么办?@nnnn I将放弃该选择。用户将被允许只选择一个完整的节点。related-related-您正在问两个完全不同的问题。首先,将选择作为
html
获取,第二个是修改结果并用修改后的节点替换所选节点。“它返回节点列表”-它不返回
选择
对象吗?无论如何,如果用户选择了更大范围的文本,其中一些来自div,另一些来自div之前或之后的元素,您想怎么办?@nnnn I将放弃该选择。用户将被允许只选择一个完整的节点。related-related-您正在问两个完全不同的问题。首先,将选择作为
html
获取,第二个是修改结果并用修改后的节点替换所选节点。