javascript - jQuery 初学者 - 解释这个 if 语句的逻辑?

标签 javascript jquery

我最近学习了一个 jQuery 教程,那个人轻描淡写了一些我不太理解的东西......脚本和标记是:

  $("document").ready(function() {
      $("#example p").replaceWith(replacementFn);
  });

  function replacementFn() {
      if ($(this).text().indexOf("1") != -1) {
          return "<p>This is paragraph uno</p>";
      }
      else {
          return this.outerHTML;
      }
  }
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<div id="example">
    <p class="a">This is paragraph 1</p>
    <p id="para1">This is paragraph 2</p>
    <p class="b">This is paragraph 3</p>
    <p id="para4" lang="en-us">This is paragraph 4</p>
    <p id="para5" lang="en-gb">This is paragraph 5</p>
</div>

这里我不明白的是'if ($(this).text().indexOf("1") != -1'背后的逻辑。我明白 != 的意思是'不等于' 并且我们正在每个 p 元素中查找数字“1”,但我想我不明白 -1 在这里意味着什么以及为什么它使声明为真。

教程中的人只是说“让我们寻找字符串“one”,它不等于 1,这意味着找到了它”,然后继续前进。

我相信这对程序员来说是显而易见的,但我更像是一名前端开发人员,试图获得一些 jQuery 和 Javascript 的基础知识。任何对相对外行有意义的解释将不胜感激!

最佳答案

$(this).text().indexOf("1") -

  1. $(this) 中,$ 是 jQuery 对象,this 是函数中当前节点的引用,并作为选择器传递给 jQuery 对象。,
  2. .text() jQuery 函数从 HTML 节点(第 1 点)中选择文本(不是 html)
  3. .indexOf("1") JavaScript 核心函数在所选文本中找到“1”(称之为子字符串,不要与索引 1 混淆) 的位置(第 2 点)[1 出现在第一段中] (如果 indexOf("Find_What") 没有找到我们要求的,它返回 -1

Basically indexOf returns index of the match in the string and it may be 0, 1 so on if match is present else -1 if match is not present.

例如-

"1st paragraph".indexOf("1");

IndexOf("1") 将返回第一个位置的 0。

"<p>paragraph 1</p>".indexOf("1") 在这种情况下,它将返回 13。

因此 -1 肯定是字符串中缺少“1”(匹配)的情况。

PS- indexOf 也是在 JavaScript 中搜索字符串中某些内容的更快和首选函数。

Here 你可以解渴了解'indexOf'的更多知识。

关于javascript - jQuery 初学者 - 解释这个 if 语句的逻辑?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42351348/

相关文章:

javascript - 是否有等效于 `window` 的 es6 模块范围?

javascript - 需要通过 name 属性隐藏 <tr>

javascript - 如何使一个 javascript 函数在另一个函数完成后运行?

jquery - 使用 jQuery 将 div 的文本与 html 中的任何输入文本框匹配

javascript - AngularJS渲染流程

javascript - 在 JavaScript 对象中附加带有 src 的 img 标签?

javascript - 如何在字符串中搜索多个值?

javascript - bootstrap datepicker 日期范围未显示在日历上

jquery - CSS - 页面上的随机行

javascript - 在包含模块的 Angular JS 文件中,函数和对象的顺序真的很重要吗?