首页 > 解决方案 > 获取同一字符串的多个索引

问题描述

我有这个:

<div contenteditable='true' class="my_div"> mango banana jus mango <b>orange<b/></div>

;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;;;;;;;;;;;;;;;;;;;;;;;;;;; ^1;;;;;;;;;;;;;;;;;;;;;;;;;;^18

我想获取每个mango的索引。

我试过了:

$('.my_div').keyup(function(){
   let mots = $(".my_div").html().replace(/(<[^>]*>)|(&[^;]*;)/gi, ' ').split(' ');
   mots = mots.filter( function(val){return val !== ''} );
   var i;
   for (i = 0; i < mots.length; ++i) {
     if (mots[i] == "mango") {
       var indexOf_ = $(".my_div").html().indexOf(mots[i]);
       console.log(indexOf_);
     }
   }
});

但是该代码总是给我“1”作为“芒果”的索引。它应该给我 1 和 18 作为芒果的索引

我的错误在哪里?

谢谢。

标签: javascriptjqueryindexof

解决方案


请尝试此代码 -

$('.my_div').keyup(function(){

   var searchableString = $(".my_div").html();
   var keyword = "mango";

   var index = searchableString.indexOf(keyword);
   while (index >=0){
    console.log("Index : "+index);
    index = searchableString.indexOf(keyword, index+keyword.length)   ;
   }
 });

推荐阅读