Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/88.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript indexOf return-1和正确的字符串JS_Javascript_Jquery_Each_Indexof - Fatal编程技术网

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。