Javascript 从html代码中获取单词的位置,给定从普通文本计算的起始索引和结束索引
我有Javascript 从html代码中获取单词的位置,给定从普通文本计算的起始索引和结束索引,javascript,jquery,regex,Javascript,Jquery,Regex,我有contenteditablediv,想知道其中键入的字符相对于html代码的索引。 例如: <div id="editableDiv" contenteditable="true"> the @twitter </div> 上面句子中@twitter这个词的开始索引是5,结束索引是12 现在我想从diveditableDiv的innerHTML中获取同一单词的索引 InnerHTML:the@twitter @twitter一词的输入索引:(5,12) 输
contenteditable
div,想知道其中键入的字符相对于html代码的索引。例如:
<div id="editableDiv" contenteditable="true">
the @twitter
</div>
上面句子中@twitter这个词的开始索引是5,结束索引是12
现在我想从diveditableDiv
的innerHTML中获取同一单词的索引
InnerHTML:the@twitter
@twitter一词的输入索引:(5,12)
输出->
起始索引:12
期末指数:19。。。您可以使用正则表达式来执行此操作,或者将数据拆分为数组并进行分析
<!DOCTYPE HTML>
<html>
<head>
<title>Bla!</title>
<script type='text/javascript'>
function boldBeforeWord(word) {
var txt = document.getElementById('divContent').innerHTML
var txtArray = txt.split(' ');
for (var i=1; i< txtArray.length; i++) {
if (word == txtArray[i].trim()) {
txtArray[i-1] = "<b>" + txtArray[i-1] + "</b>";
} else {
console.log (txtArray[i]);
}
}
document.getElementById('divContent').innerHTML = txtArray.join (' ');
}
</script>
</head>
<body>
<div id='divContent'>
This is div with content. I'll try to parse it's content, add bold to any word before @guy <br>
Is this helpfull? I'm asking as @guy
</div>
<button onclick = 'boldBeforeWord("@guy");'> Click to bold </button>
</body>
</html>
布拉!
函数boldBeforeWord(word){
var txt=document.getElementById('divContent').innerHTML
var txtArray=txt.split(“”);
对于(var i=1;i
这有用吗?我是以@guy的身份问的
单击以加粗
在本例中,我只对所有单词进行了标记,但您可以使用“indexOf”来确保您在数组中的位置正确。答案非常明显:文本不包含html标记
您可以在这里找到完整的答案:谢谢Dafny。我可以用一些修改来替换word,但问题是如何在拆分数组中维护我感兴趣替换的word的索引?解决方案将用新字符串替换所有出现的word。最重要的是,您的解决方案确实很有帮助。新年快乐。我终于能够解决这个问题,只需对你的答案稍加修改。新年快乐。谢谢
<!DOCTYPE HTML>
<html>
<head>
<title>Bla!</title>
<script type='text/javascript'>
function boldBeforeWord(word) {
var txt = document.getElementById('divContent').innerHTML
var txtArray = txt.split(' ');
for (var i=1; i< txtArray.length; i++) {
if (word == txtArray[i].trim()) {
txtArray[i-1] = "<b>" + txtArray[i-1] + "</b>";
} else {
console.log (txtArray[i]);
}
}
document.getElementById('divContent').innerHTML = txtArray.join (' ');
}
</script>
</head>
<body>
<div id='divContent'>
This is div with content. I'll try to parse it's content, add bold to any word before @guy <br>
Is this helpfull? I'm asking as @guy
</div>
<button onclick = 'boldBeforeWord("@guy");'> Click to bold </button>
</body>
</html>