如果所选文本是HTML,如何使用javascript获取所选DOM?
有一个div在页面上显示HTML。 我可以使用如果所选文本是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
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
获取,第二个是修改结果并用修改后的节点替换所选节点。