GVKun编程网logo

如何用span填充突出显示的文本并在javascript中放置相对于它的div?(怎么给span赋值)

13

在这篇文章中,我们将为您详细介绍如何用span填充突出显示的文本并在javascript中放置相对于它的div?的内容,并且讨论关于怎么给span赋值的相关问题。此外,我们还会涉及一些关于java–可

在这篇文章中,我们将为您详细介绍如何用span填充突出显示的文本并在javascript中放置相对于它的div?的内容,并且讨论关于怎么给span赋值的相关问题。此外,我们还会涉及一些关于java – 可以在Eclipse中突出显示一个语句,然后按引号/ etc ..来“包装”字符中突出显示的文本(像在SublimeText中)?、javascript – html5中的文字突出显示、javascript – JQuery突出显示Div的内部文本,OnClick、javascript – 交互式选择突出显示浏览器中的文本的知识,以帮助您更全面地了解这个主题。

本文目录一览:

如何用span填充突出显示的文本并在javascript中放置相对于它的div?(怎么给span赋值)

如何用span填充突出显示的文本并在javascript中放置相对于它的div?(怎么给span赋值)

我的最终目标是让用户能够:

>从段落中选择文本
>将文本包装在一个范围内
>在选择的末尾放置一个操作按钮/ div,他们可以单击以执行进一步操作

到目前为止,这是我的代码:

function discussion(){       
    var $this = this;
    $(document).bind("mouseup",function(){
        $this.selectText($this);
    });
}
discussion.prototype.selectText = function($this){
    var selection = $this.getSelectedText();
    if(selection.length > 3){
        console.log(selection);
        var spn = '<span>' + selection + '</span>';
        $(this).html($(this).html().replace(selection, spn)); 
        //ERROR here; it says that it can't replace() on undefined $(this).html()
    }
}
discussion.prototype.getSelectedText = function(){
    if(window.getSelection){
        return window.getSelection().toString();
    }
    else if(document.getSelection){
        return document.getSelection();
    }
    else if(document.selection){
        return document.selection.createrange().text;
    }
}

正如您所料,到目前为止,我可以使用window.getSelection().toString()获取选择的文本.如果我删除.toString(),我会得到一个Selection对象.有了这个,我可以使用window.getSelection().anchorNode.parentNode来获取我需要的大部分信息.

我还看到Selection.anchorOffset和Selection.extentOffset将给出我选择的字符范围.有没有办法可以使用这些信息来放置跨度?

我猜我的问题是:

>为什么这段代码不包含div中的选择?
>这会因同一文本的多个实例而失败吗?
>在使用span或inline-block div或其他东西包装选区后,我是否能够获得(并使用)其位置来定位额外的按钮/ div?

哎呀,谢谢你的时间!

编辑:我在这里添加了一个JS小提琴:http://jsfiddle.net/nn62G/

解决方法:

getSelectedText返回的值是选择而不是DOM中的元素.这就是为什么你的html函数的cal失败,选择没有这样的属性.

您可以按照以下方式执行所需操作,将要处理的文档部分设置为contentEditable,例如< p>或者< div>.当您在该区域内选择时,您可以使用document.activeElement获取HTML元素.如果在contentEdiatble区域外选择,则activeElement将返回body元素.您可以处理的activeElement:

document.activeElement.innerHTML = 
    document.activeElement.innerHTML.replace (selection, spn);

但是,如果您将文档的某些部分编辑为可编辑的其他内容,则可能不需要.更严重的是,如果所选文本多次出现,则无法确定实际选择了哪一个,因此这可能无法解决您的问题.

更新了小提琴here

java – 可以在Eclipse中突出显示一个语句,然后按引号/ etc ..来“包装”字符中突出显示的文本(像在SublimeText中)?

java – 可以在Eclipse中突出显示一个语句,然后按引号/ etc ..来“包装”字符中突出显示的文本(像在SublimeText中)?

我从Sublime Text到 Eclipse. ST的最喜欢的功能之一是突出显示一段文字,然后按相应的键可以将其包装成引号或括号.

这可能很难解释功能,所以这里是一个gif的例子:

所以,你可以看到,如果你突出显示一段文本,然后,在这个例子中,按(它将括弧中突出显示的文本.

当我在Eclipse中尝试这个,突出显示文本,然后按(只是替换我突出显示而不是包装它.

有没有办法在Eclipse中获得这个功能?

解决方法

突出显示文本,剪切(ctrl x),键入引号,粘贴文本(ctrl v).

这是一个跛脚的解决方案,但它更快,因为eclipse创建引号并将光标放在中间.

javascript – html5中的文字突出显示

javascript – html5中的文字突出显示

我正在尝试使用uni代码编写telugu文本,以便我可以根据声音更改为多种颜色来突出显示文本.因为我使用的是html5和js

<div>&#3114;</div>
<div>&#3114;&#3134;</div>

通过使用

$("#paa").animate({ color: "blue" }, 500); 

我可以改变字母的整个颜色但是
现在我想强调那封信的某些部分.请建议如何做到.???

解决方法:

有一些css技巧来伪造background-clip:text;或类似的东西SVG.

span {
  position:relative;
  color:green;
}
span:before {
  position:absolute;
  top:0;
  left:0;
  overflow:hidden;
  content:attr(data-text);
  color:blue;
  height:0.7em;
  overflow:hidden;
  animation: txtclr 4s infinite;
}
p {
  background:yellow;
  color:rgba(128, 0, 128 , 0.5);
  font-size:2em;
  font-weight:bold;
  background:linear-gradient(to bottom,lightgray 50%,yellow 50%);
  display:table;/* demo purpose to shrink to text size*/
  Box-shadow:inset -3em 0 rgba(100,100,100,0.5);
  
}
@keyframes txtclr {
  0% {
    height:50%;
  }
  25%,75%{
    height:0;
    width:0;
  }
  50%{
    height:100%;
  }
}
<p><span data-text="my text">my text</span> and some other text </p>

运行代码段并查看从上到下填充蓝色的绿色文本.

没有添加前缀,以后的浏览器不需要它:)

javascript – JQuery突出显示Div的内部文本,OnClick

javascript – JQuery突出显示Div的内部文本,OnClick

我正在尝试自动突出显示< pre>的文本因此复制起来更容易……以下是我一直在使用的内容:

jQuery( document ).ready( function() {
  $( 'pre' ).click( function() {
    $( this ).select();
    
    var doc = document
    , text = $( this )
    , range, selection;

    if( doc.body.createTextRange ) {
      range = document.body.createTextRange();
      range.movetoElementText( text );
      range.select();
    } else if( window.getSelection ) {
      selection = window.getSelection();        
      range = document.createrange();
      range.selectNodeContents( text );
      selection.removeAllRanges();
      selection.addRange( range );
    }
  } );
} );
pre {cursor:pointer;}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<pre>This is Text</pre>

我搜索过的帖子都将“突出显示”称为背景颜色,但我想实际突出显示它,以便用户可以轻松复制.如何修改上面的JS,以便当用户点击文本时突出显示它?

解决方法:

你的代码非常适合.只需要进行一点改动.

text = $(this)

需要成为

text = this

您使用文本作为参数的函数是Vanilla JavaScript方法,因此期望DOM节点而不是jQuery对象.在这种情况下,“这个”本身就是一个DOM节点.但是,将它包装在$()中会将其转换为jQuery对象,然后由您稍后调用的函数无法使用.

jQuery( document ).ready( function() {
  $( 'pre' ).click( function() {
    $( this ).select();
    
    var doc = document
    , text = this
    , range, selection;

    if( doc.body.createTextRange ) {
      range = document.body.createTextRange();
      range.movetoElementText( text );
      range.select();
    } else if( window.getSelection ) {
      selection = window.getSelection();        
      range = document.createrange();
      range.selectNodeContents( text );
      selection.removeAllRanges();
      selection.addRange( range );
    }
  } );
} );
pre {cursor:pointer;}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<pre>This is Text</pre>

javascript – 交互式选择突出显示浏览器中的文本

javascript – 交互式选择突出显示浏览器中的文本

我需要的是通过Javascript在浏览器中突出显示文本的交互式选择.

更具体地说,我只想说我在div元素中有一堆文本,如下所示:

<div>The quick brown fox jumps over the lazy dog ... </div>

现在我想要做的是选择这个文本的某个范围并突出显示它(即“棕色狐狸”).我已经通过使用rangy.js来完成这项工作.

现在我真的想让这个选择/突出显示更具交互性,以便用户可以抓住选择的开头或结尾(使用某种句柄)并通过将当前选择的开头或结尾拖动到交互式来调整选择的大小.新的起点或终点.

我试图谷歌这个,但找不到任何东西.更糟糕的是,我完全不知道应该如何开始实施这样的事情.

或许有人可以指出我正确的方向,甚至可以更好地了解如何开始实施这样的事情.

非常感谢任何帮助……

解决方法:

这个问题相当复杂,并且由于浏览器之间缺乏一致性而受到阻碍.但是,我已经对这个问题进行了一定程度的成功.

Test out my solution with this jsfiddle

Edit: more robust solution

我不保证这适用于所有情况,我的测试仅限于文本到目前为止.还有一些问题需要解决,我将在不久的将来解决.但是,我认为它已经准备好在这里发布了.

方法

问题可分为几个步骤.首先,我们需要在用户的选择周围插入标记.尽管有一些必须解决的设计决策,但这并不困难.经过一些实验,我决定在标记位置直接插入文档;然后,更容易在这些标记之间选择内容.下面是插入标记方法.

function insertMarker (isBefore) {
    var range;

    if (window.getSelection) {
        // IE9+ and non-IE
        var sel = window.getSelection();

        if (sel.getRangeAt) {
            range = window.getSelection().getRangeAt(0);
            range.collapse(isBefore);
        }
    } else if (document.selection && document.selection.createrange) {
        // IE < 9
        range = document.selection.createrange();
        range.collapse(isBefore);
    }

    // Create the marker element and insert it into the DOM.
    if (range) {
        range.insertNode(createMarker(isBefore));
    }
}

其次,用户必须能够在文档周围拖动这些标记,以便它们在字符/可选内容之间锁定.这可以使用document.caretPositionFromPoint(x,y)(标准)或document.caretRangeFromPoint(x,y)(WebKit)来实现.

第三,移动标记时,必须更新选择以反映此更改.这可以使用range.setStartAfter和range.setEndBefore来实现,尽管Range实现不同,但大多数浏览器都支持它们.

function selectSelection () {
    if (window.getSelection) {
        // IE9+ and non-IE
        var sel = window.getSelection();
        var range = document.createrange();
        range.setStartAfter($(".marker").get(0));
        range.setEndBefore($(".marker").get(1));
        sel.removeAllRanges();
        sel.addRange(range);
    }
    else if (document.selection && document.selection.createrange) {
        // IE < 9
        var range = document.selection.createrange();
        range.setStartAfter($(".marker").get(0));
        range.setEndBefore($(".marker").get(1));
    }
}

关于如何用span填充突出显示的文本并在javascript中放置相对于它的div?怎么给span赋值的介绍现已完结,谢谢您的耐心阅读,如果想了解更多关于java – 可以在Eclipse中突出显示一个语句,然后按引号/ etc ..来“包装”字符中突出显示的文本(像在SublimeText中)?、javascript – html5中的文字突出显示、javascript – JQuery突出显示Div的内部文本,OnClick、javascript – 交互式选择突出显示浏览器中的文本的相关知识,请在本站寻找。

本文标签: