【问题标题】:check if a string exist in a div text jquery检查div文本jquery中是否存在字符串
【发布时间】:2016-01-02 22:45:24
【问题描述】:

var qtr = $('div').text();
var qtr1 = qtr.split(',')
console.log(qtr1.length)

for (var i = 0; i < qtr1.length; i++) {
  console.log(qtr1[i]);
}
console.log(qtr1);
if ($.inArray('1st qtr', qtr1)) {
  alert('1st');
}
if ($.inArray('2nd qtr', qtr1)) {
  alert('2nd');
}
if ($.inArray('3rd qtr', qtr1)) {
  alert('3rd');
}
if ($.inArray('4th qtr', qtr1)) {
  alert('4th');
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js"></script>
<div>1st qtr,2nd qtr,3rd qtr,4th qtr,</div>

我有一个包含文本的 div,我想检查特定文本是否在 div 中。我尝试拆分 div 文本并检查 $.inArray 但第一个文本即使丢失也不会显示。

问题:

  1. 为什么即使只有 4 个文本,我也会得到 5 个长度。最后添加了一个空格
  2. 为什么1st qtr的第一个文本即使存在也没有显示。
  3. 什么是最好的check if a text is existing in a text

【问题讨论】:

  • 如果要突出显示关键字可以使用github.com/julmot/jmHighlight
  • @julmot 我不想突出显示文本,我会将其用作其他目的的参数。
  • 文本末尾有一个逗号。这就是长度为 5 的原因
  • 长度为 5,因为内容以逗号结尾 - 后面的空字符串被视为第五个元素。

标签: javascript jquery html


【解决方案1】:

即使只有 4 个文本,为什么我会得到 5 个长度。最后加了一个空格

字符串末尾包含,。当使用, 拆分字符串时,将添加一个空字符串作为最后一个元素,因为在最后一个, 之后没有任何内容。您可以使用正则表达式删除最后一个,

为什么现在显示第一个 qtr 的第一个文本,即使它存在。

inArray 返回在字符串中找到的子字符串的索引。因此,对于第一个字符串,返回索引 0。由于0 是假值,所以 if 条件评估为假,块不会被执行。

更新代码

var qtr = $('div').text().replace(/,$/, '');
var qtr1 = qtr.split(',');

console.log(qtr1.length)

if ($.inArray('1st qtr', qtr1) !== -1) {
  alert('1st');
}
if ($.inArray('2nd qtr', qtr1) !== -1) {
  alert('2nd');
}
if ($.inArray('3rd qtr', qtr1) !== -1) {
  alert('3rd');
}
if ($.inArray('4th qtr', qtr1) !== -1) {
  alert('4th');
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js"></script>
<div>1st qtr,2nd qtr,3rd qtr,4th qtr,</div>

最好检查文本中是否存在文本。

indexOf最好检查字符串是否包含子字符串

var str = '1st qtr,2nd qtr,3rd qtr,4th qtr,';

var contains = str.indexOf('4th qtr') > -1;

alert('str contains  4th qtr? ' + contains);

【讨论】:

  • 为什么要在条件上加-1?即使存在第 4 个也不显示我需要显示所有文本,因为所有文本都存在
  • 你所做的是将最后一个 , 更改为 space 并做了同样的事情,只是在条件中添加了 !== -1?我想了解你做了什么,请多多包涵。
  • @Pekka 1. 从字符串中删除了最后一个逗号。 2., 拆分字符串3. inArray 返回在字符串中找到的子字符串的索引。因此,对于第一个字符串,返回索引 0。由于 0 是假值,因此 if 条件评估为假并且不执行该块。
  • @Pekka 第一个字符的索引为零,就像数组一样,当在数组中没有找到元素时返回-1,希望能解惑。
猜你喜欢
  • 2014-12-11
  • 1970-01-01
  • 2011-09-30
  • 2013-03-01
  • 1970-01-01
  • 1970-01-01
  • 2016-04-19
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多