indexOf使用正确的字符串JS返回-1

时间:2014-05-06 12:30:22

标签: javascript jquery each indexof

我的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);
    }
});

3 个答案:

答案 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();

MDN Doc : .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()