Javascript добавить в цикл for, чтобы игнорировать различные узлы в списке, если текстовое содержимое найдено - PullRequest
0 голосов
/ 04 июня 2019

У меня есть запрос в мой HTML-документ с использованием querySelector и querySelectorAll, который получает все li, игнорируя те, которые имеют, вот код:

var number2 = number;

var otherSubjRow = document.querySelector("#exploreTable");
if(otherSubjRow) {
var otherSubjCells = Row.querySelectorAll("li");
if (typeof(otherSubjCells) != 'undefined' && Cells != null)
{
l = otherSubjCells.length;
var otherSubjects = ""
var number2 = number;
for (var i = 0; i < l; i++) {

    if (otherSubjCells[i].querySelectorAll("a").length < 1) {
     otherSubjCells[i].innerText + " ");
     otherSubjects += number2 + "." + otherSubjCells[i].innerText + " "; 
     number2++      
  }
}
}

Вот фрагмент моего документа:

 <table id="exploreTable">
    ...
 <tr>
 <li>
  <a></a>
 </li>
 </tr>
 <tr><td>
 <ul><li>International relations -- Handbook
  <a></a>
 </li></ul>
 </td></tr>
 <tr><td>
 <ul><li>Titles by: Jose, Charles, editor.
  <a></a>
 </li></ul>
 </td></tr>
 <tr><td>
 <ul><li>Series: Policy brief ; no. 2016-03
  <a></a>
 </li></ul>
 </td></tr>
 </table>

Дело в том, что я хочу игнорировать захват в моем цикле for всего текста, который содержится в начале текста «Series:» и «Titles by:».Я пытаюсь добавить это здесь, используя ||:

 if (otherSubjCells[i].querySelectorAll("a").length < 1)

Но не совсем уверен, что это правильный способ сделать это.Или добавить другой, если в заявлении?Есть идеи, как это сделать?Спасибо и ура!

1 Ответ

0 голосов
/ 04 июня 2019

    <table id="exploreTable">
        <tr>
            <li>
                <a></a>
            </li>
        </tr>
        <tr>
            <td>
                <ul>
                    <li>International relations -- Handbook
                        <a></a>
                    </li>
                </ul>
            </td>
        </tr>
        <tr>
            <td>
                <ul>
                    <li>Titles by: Jose, Charles, editor.
                        <a></a>
                    </li>
                </ul>
            </td>
        </tr>
        <tr>
            <td>
                <ul>
                    <li>Series: Policy brief ; no. 2016-03
                        <a></a>
                    </li>
                </ul>
            </td>
        </tr>
    </table>

    <script>
      const arr = document.getElementById("exploreTable").querySelectorAll('li');
      const result = [].filter.call(arr,(el)=>{
        return !(el.textContent.indexOf("Series:") === 0||el.textContent.indexOf("Titles by:") === 0)
      });
      const resText = result.map((el, index)=>{
         return `${index+1} ${el.textContent}`;
      });
      console.log(result);
      console.log(resText);

    </script>
...