编辑2016年11月18日:
我希望基于一个简单的条件在文本区域中标记整个句子(如果句子长度超过n-文本应该被标记)。
我怀疑如何用mark.js标记整个句子。在@dude的帮助下,这是解决方案:
参见Mark (@MarkBuskbjerg)在CodePen上的钢笔@MarkBuskbjerg。
HTML
<div id="textArea" contenteditable="true">
Any text you want...
</div>JavaScript
$(document).ready(function() {
var rawText = $("#textArea").html();
var sentenceArray = rawText.split(".");
var matchWarning = [];
var longSentence = 16;
var words;
var wordCounter;
for (var i in sentenceArray) {
words = sentenceArray[i].split(" ");
wordCounter = words.length;
if (wordCounter > longSentence) {
matchWarning.push(sentenceArray[i]);
}
}
$("#textArea").mark(matchWarning, {
"separateWordSearch": false,
});
});通过设置"seperateWordSearch":false,整个句子作为一个整体被mark.js标记
原始帖子:,我一直在使用https://markjs.io/标记输入字段中的长单词。
设置非常简单。
现在我正试着根据长度来标记整个句子。
问题是,如果我插入一个字符串,MarkJS会遍历字符串中的每个单词,并将它们与整个文本进行匹配。
只有当整个句子与MarkJS匹配时,有人能想到做标记的方法吗?
以下是我最接近的解决方案之一:)
HTML:
<div id="myTextArea" contenteditable="true">
Indsæt din tekst her. Det her er bare en helt almindelig tekst, der ikke
besidder de store armbevægelser. Den har dog eksempelvis en meget lang
sætning, der mest af alt er lang, fordi der simpelthen skal være en rigtig
lang sætning, der kan udløse en alarm for lange sætninger, når dette
fantastiske stykke værktøj begynder at virke. Så nu er det bare i gang med
at skrue på javascript knapper, så skal der nok ske noget. Sig det så. Sig
hammertime.
</div>(以上文字只是丹麦语中的胡言乱语)
JavaScript:
function warningLabel() {
var rawText = $("#myTextArea").html();
var sentenceArray = rawText.replace(/\n\r?/g, '<br />').split(". ");
var matchWarning = new Array();
for (var i in sentenceArray) {
if (sentenceArray[i].length > 100) {
matchWarning.push(sentenceArray[i]);
}
}
var instance = new Mark(document.getElementById("myTextArea"));
instance.mark(matchWarning.toString(), {
"accuracy": "exactly",
});
}作为一个注意事项,我已经为它自己编写了功能。但是,由于我已经将MarkJS用于本项目中的其他内容,所以最好继续使用现有代码,而不是生成新的:)
发布于 2016-11-17 09:47:06
首先,您似乎将jQuery和普通JS混合在一起。在提供的代码末尾,您使用的是document.getElementById,而在顶部,您使用的是$(...)。如果您想使用jQuery,mark.js也可以用于jQuery。
其次,传递给mark.js的“文本”包含:
Den har dog eksempelvis en meget lang <br />sætning, der mest af alt er lang, fordi der simpelthen skal være en rigtig <br />lang sætning, der kan udløse en alarm for lange sætninger, når dette <br />fantastiske stykke værktøj begynder at virke您应该只将文本传递给mark.js,因为<br />不是文本,当您要使用下面提到的解决方案时,它不会找到任何匹配项。
由于你没有提到你想做什么,我不能为你提供一个有用的小提琴。
无论如何,要单独找到整个文本而不是包含的单词,需要指定separateWordSearch选项:
var instance = new Mark(document.getElementById("myTextArea"));
instance.mark(matchWarning.toString(), {
"accuracy": "exactly",
"separateWordSearch": false
}); https://stackoverflow.com/questions/40633200
复制相似问题