我的ul
里面有li
。因此,我使用$.each()
来搜索id
的每个li
。
我的问题是,我是一个id
的新生儿" Nouvelle AC"。但是当我使用$(product).indexOf("NOUVELLE");
时,它返回-1。
为了弄清楚并且更容易理解,我创建了一个jsFiddle 使用控制台来理解我所说的内容。
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>
JS :
$('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);
}
});
答案 0 :(得分:0)
您正在寻找字符串中的大写字符。
添加.toUpperCase(),它会起作用。
produtoloaded.toUpperCase().indexOf(product)
更好的做法是将两个字符串都设置为大写或小写,这样可以防止拼写错误的逻辑错误。
produtoloaded.toUpperCase().indexOf(product.toUpperCase())
答案 1 :(得分:0)
indexOf区分大小写:
var product = "NOUVELLE";
var produtoloaded = $(this).attr('id');
product = product.toLowerCase();
produtoloaded = produtoloaded.toLowerCase();
答案 2 :(得分:0)
这是一个精确搜索问题... 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()