Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/452.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/4/video/2.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 更改所选文本的颜色_Javascript - Fatal编程技术网

Javascript 更改所选文本的颜色

Javascript 更改所选文本的颜色,javascript,Javascript,我知道存在CSS伪元素::选择。但无论如何,我需要它,因为我学习JavaScript。以下是我使用的代码,但它不起作用: document.body.addEventListener('mouseup', function() { var txt = window.getSelection().toString(); var txtNode = document.createTextNode(txt); var rng = document.createRange();

我知道存在CSS伪元素::选择。但无论如何,我需要它,因为我学习JavaScript。以下是我使用的代码,但它不起作用:

document.body.addEventListener('mouseup', function() {
    var txt = window.getSelection().toString();
    var txtNode = document.createTextNode(txt);
    var rng = document.createRange();
    rng.setStart(txtNode, 0);
    rng.setEnd(txtNode, txt.length);
    var span = document.createElement('span');
    span.style.backgroundColor = 'green';
    rng.surroundContents(span);
}, false);

在那之前,我只是强调一下。单击空空间分配重置时,您还需要做什么

document.body.addEventListener('mouseup' , function(){
    var selection = window.getSelection();
    var range = selection.getRangeAt(0);

    var span = document.createElement('span');
    span.style.backgroundColor = 'green';

    range.surroundContents(span);
} , false);

坦率地说,我不明白什么不起作用。所以您需要::selection,或者换句话说?你在学习JS,所以你需要它,它并不能解释你的问题以及你想要的输出是什么。只是把它涂成绿色?我想用JavaScript改变一个标准选择的颜色。虽然这种方法到处都有很多HTML元素,但是有什么特别的原因让你想这样做吗?这并不容易。必须将选定节点拆分为其选定部分和非选定部分,然后将选定节点包裹在元素(例如,跨度)中,可以根据需要设置样式。在嵌套元素中存在类似于选择的边缘情况。我想有一次我回答了一个重复的或类似的问题,但找不到。@Oriol,我已经试了半天了——这是不可能的。以不同的方式尝试。