Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/85.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 从html代码中获取单词的位置,给定从普通文本计算的起始索引和结束索引_Javascript_Jquery_Regex - Fatal编程技术网

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

现在我想从div
editableDiv
的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>