在类找到的div内容中使用.search()查找数组的元素

时间:2018-11-29 15:34:14

标签: javascript

我需要在按类找到的div内容中找到带有.search()的数组元素。每当我尝试查找数组的元素时,尽管都应该找到它,但我找不到它。我需要修复此错误或改进代码,该怎么办?

var myBtn = document.getElementsByClassName("myBtn");
var fjscolor2 = ["hola",
                 "Aqua-Natural",
                 "Gris/Decape",
                 "ul",
                 "title",
                 "div",
                 "hola",
                 "Amarillo-Natural"];

var resultado = "";
var pos = -1
// alert("Hello!");
//uso foreach para recorrer cada elemento del array
fjscolor2.forEach(function(element) {

    for (var i = 0; i < myBtn.length; i++) {

        var ejemplo = myBtn[i].innerHTML;
        //En caso de existir se asigna la posición en pos
        pos = ejemplo.search(element);

        //Si existe
        if(pos!=-1){
            resultado += " Palabra "+element+ "encontrada en la posición "+pos;
        }
    }
});

//En caso de que no exista.
if(pos === -1){
    resultado = "No existe ninguna de las palabras del array.";
}
alert(resultado);
<div class="myBtn">hola 1 earlier.
  <div class="myBtn2"><strong>Note:</strong> hola 2
    <div class="myBtn2"><strong>Note:</strong> hola 3</div>
  </div>
</div>

<p id="demo"></p>

1 个答案:

答案 0 :(得分:0)

您的fjscolor2数组包含字符串元素。搜索功能不接受字符串作为参数,而是接受RegExp对象。并且您需要为比赛设置某种计数器,并使用它来设置条件。尝试以下类似的方法。

<html>

<body>
  <div class="myBtn">hola 1 earlier.
    <div class="myBtn2"><strong>Note:</strong> hola 2
      <div class="myBtn2"><strong>Note:</strong> hola 3</div>
    </div>
  </div>
  <p id="demo"></p>

  <script>
    var myBtn = document.getElementsByClassName("myBtn");
    var fjscolor2 = [
      "Aqua-Natural",
      "Gris/Decape",
      "ul",
      "title",
      "div",
      "hola",
      "Amarillo-Natural"
    ];
    var counter = 0;
    var resultado = "";
    var pos = -1
      // alert("Hello!");
      //uso foreach para recorrer cada elemento del array
    fjscolor2.forEach(function(element) {
      var regexString = "(" + element + ")";
      var regexObj = new RegExp(regexString, 'g')

      for (i = 0; i < myBtn.length; i++) {
        var ejemplo = myBtn[i].innerHTML;
        //En caso de existir se asigna la posición en pos

        pos = ejemplo.search(regexObj);

        //Si existe
        if (pos !== -1) {
          counter++;
          resultado += " Palabra " + element + " encontrada en la posición " + pos + "\n";
        } else {

        }
      }
    });

    //En caso de que no exista.
    if (counter === 0) {
      resultado = "No existe ninguna de las palabras del array.";
    }
    alert(resultado);
  </script>

</body>

</html>