Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/207.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或jquery中获取周围的单词?_Javascript_Android_Jquery_Html - Fatal编程技术网

如何在javascript或jquery中获取周围的单词?

如何在javascript或jquery中获取周围的单词?,javascript,android,jquery,html,Javascript,Android,Jquery,Html,我正在使用webview并在webview中加载html页面,所以我在这里遇到了一些问题,我想使用javascript.here。我在下面解释我需要什么: 我有这样的html数据- 我选择了单词widget。但我想知道选择的是红色还是蓝色。这可能吗?我一直在网上搜寻一些建议,但我很难找到答案 因此,假设从上面的文本中,我选择的文本选择是后面的,显示为粗体,我只需要在该行中该单词前面的单词和该单词后面的单词。假设我在第2行中选择,那么我需要该行中单词前的所有单词和该行中所选单词后的所有单词,如果所

我正在使用webview并在webview中加载html页面,所以我在这里遇到了一些问题,我想使用javascript.here。我在下面解释我需要什么: 我有这样的html数据-

我选择了单词widget。但我想知道选择的是红色还是蓝色。这可能吗?我一直在网上搜寻一些建议,但我很难找到答案

因此,假设从上面的文本中,我选择的文本选择是后面的,显示为粗体,我只需要在该行中该单词前面的单词和该单词后面的单词。假设我在第2行中选择,那么我需要该行中单词前的所有单词和该行中所选单词后的所有单词,如果所选单词在第2行的开头,那么将前一个单词返回为null,并将所选单词后的剩余单词返回到第2行的末尾,同样,对于最后一个单词,反之亦然

请告诉我们如何使用JavaScript实现它?

如何使用正则表达式匹配:

var pattern = /^(.+)(selection is after)(.+)$/;
match = "hello selection is after goodbye".match(pattern)

match[1] // hello
match[2] // selection is after
match[3] // goodbye

我在一个JSFiddle中创建了一个解决方案

首先,我创建了一个段落来保存要选择的文本

<p id="yourTextContainer">Lorem ipsum data sid amet</p>
然后,在JavaScript中,我将段落分割为多个跨距,将每个单词的索引放在name属性中。然后,当单击一个单词时,它使用索引返回前面的所有单词和后面的所有单词

    var textindex;
var textbefore;
var textafter;

$(document).ready(function(){
var words=$("#yourTextContainer").text().split(' ');
$("#yourTextContainer").html("");

$.each(words, function(i,val){
//wrap each word in a span tag 
$('<span name="'+ i+'"+ />').text(val +" ").appendTo("#yourTextContainer");

});

$("#yourTextContainer span").live("click",function(event){event.stopPropagation();
                                                          $("#yourTextContainer span").css("background-color","white");
$(this).css("background-color","blue");

//gets the text of clicked span tag
var textselected = $(this).text();
textindex = $(this).attr("name");                                                          
    alert("You just selected "+textselected+" index " + textindex);
textbefore= "";
textafter = "";                                                          
     $("span").each(function (index) { 
         // alert("LOOPING INDEX " + index);
         if (index<(textindex))
             textbefore = textbefore + $(this).text() + " ";
         if (index>(textindex))
             textafter = textafter + $(this).text() + " ";
         });
     alert("Text before is "+textbefore );
     alert("Text after is "+textafter );                                                     
});
});
例如,如果单击ipsum,JS警报、Lorem作为前面的文本,数据sid amet作为ipsum后面的文本


希望这有帮助!您也可以运行小提琴来了解我的意思。

我需要从当前行开始到当前行结束的前一个单词和后一个单词,这对我有用吗???您只需要单个单词。一个在选择比赛之前,一个在选择比赛之后?如果您希望所有单词在同一行、前后,则类似于上述表达式的内容将起作用。^和$是线锚的开始和结束。但在我的例子中,ID和节点是不同的,它并不总是来自段落,它可以来自标题标签和任何其他标签,所以如何得到它???