检查如果一个字符串在一个div文本的jQuery

问题描述:

检查如果一个字符串在一个div文本的jQuery

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. 为什么我得到5作为长度,即使只有4个文本。最后添加额外空间
  2. 为什么1st qtr的第一个文本即使存在也不显示。
  3. 什么是check if a text is existing in a text的最佳选择。
+0

如果你想突出你可以使用https://github.com/julmot/jmHighlight关键字 – dude

+0

@julmot我不想高亮文本我会用它作为参数用于其他目的。 – guradio

+2

您在文字结尾处有一个逗号。这就是长度为5的原因 – shemy

为什么即使只有4个文本,长度为5。在最后添加额外空间

该字符串包含最后的,。当使用,分割字符串时,由于在最后一个,之后没有任何内容,所以将一个空字符串添加为最后一个元素。你可以使用正则表达式去除最后的,

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

inArray返回在字符串中找到的子字符串的索引。因此,返回索引0的第一个字符串。由于0是falsy值,因此if条件评估为false并且该块未执行。

更新的代码

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);

+0

为什么在条件下加-1?即使它存在,也不显示第4个,因为所有文本都存在,所以我需要显示所有文本。 – guradio

+0

最后一个文本未显示。请看看 – guradio

+0

@Pekka请检查更新后的答案 – Tushar