Javascript indexOf return-1和正确的字符串JS
我有一个Javascript indexOf return-1和正确的字符串JS,javascript,jquery,each,indexof,Javascript,Jquery,Each,Indexof,我有一个ul,里面有li。因此,我使用$.each()搜索li的每个id 我的问题是,我有一个id那是“Nouvelle AC”。但是当我使用$(product.indexOf(“NOUVELLE”)它返回-1 为了解决这个问题并使其更易于理解,我创建了一个。 用控制台来理解我说的话 HTML: <ul class="product-list"> <li class="product" id="Me too AC"></li> <li c
ul
,里面有li
。因此,我使用$.each()
搜索li
的每个id
我的问题是,我有一个id
那是“Nouvelle AC”。但是当我使用$(product.indexOf(“NOUVELLE”)代码>它返回-1
为了解决这个问题并使其更易于理解,我创建了一个。
用控制台来理解我说的话
HTML:
<ul class="product-list">
<li class="product" id="Me too AC"></li>
<li class="product" id="Wish BR"></li>
<li class="product" id="Nouvelle AC"></li>
<li class="product" id="Gloss Pearl AC"></li>
<li class="product" id="Gloss Pearl BR"></li>
<li class="product" id="Kish too AC"></li>
<li class="product" id="Kit Wish BR"></li>
<li class="product" id="Fresh AC"></li>
</ul>
$('ul.product-list li.product').each(function() {
var product = "NOUVELLE";
var produtoloaded = $(this).attr('id');
console.log('Product loaded: '+produtoloaded);
console.log('Product searched: '+product);
console.log('If contains: '+produtoloaded.indexOf(product));
if (produtoloaded.indexOf(product) > -1) {
//IF INDEX IS MORE THAN -1 THE STRING CONTAINS THE PRODUCT
var offsetTop = produtoloaded.offsetTop;
console.log(offsetTop);
}
});
您正在查找不正确的字符串中的大写字符
Add.toUpperCase()就可以了
produtoloaded.toUpperCase().indexOf(product)
更好的做法是将两个字符串都改为大写或小写,这样可以防止拼写错误打乱逻辑
produtoloaded.toUpperCase().indexOf(product.toUpperCase())
indexOf是区分大小写的:
var product = "NOUVELLE";
var produtoloaded = $(this).attr('id');
product = product.toLowerCase();
produtoloaded = produtoloaded.toLowerCase();
这是一个精确搜索的问题indexOf
函数查找精确字符串,区分大小写:
var product = "NOUVELLE"; //or make in lower case already so that you can skip 'product= product.toLowerCase();'
var produtoloaded = $(this).attr('id');
product = product.toLowerCase();
produtoloaded = produtoloaded.toLowerCase();
console.log('Product loaded: '+produtoloaded);
console.log('Product searched: '+product);
console.log('If contains: '+produtoloaded.indexOf(product));
if (produtoloaded.indexOf(product) > -1) {
//IF INDEX IS MORE THAN -1 THE STRING CONTAINS THE PRODUCT
var offsetTop = produtoloaded.offsetTop;
console.log(offsetTop);
}
您也可以用大写形式调用,只需调用toUpperCase()
而不是toLowerCase()
区分大小写即可。使用produtoloaded.toUpperCase().indexOf(product.toUpperCase())
您正在li的id值中找到不存在的产品indexOf。您无法写入“var product=“Nouvelle”;?id存在。请再试一次。你会在LI's中看到“Nouvelle AC”s@Fr我不能。因为这只是为了弄清楚,在我的代码中,它来自PHP。