如何同时使用Array和IndexOf?

时间:2018-12-18 13:47:28

标签: javascript jquery html

我正在尝试创建一个字符串数组,并使用indexOf函数检查文本是否存在于<td>上,是否要执行,否则什么都不做? 例如。<td>上存在一个,因此indexOf识别执行 问题在于,当我不使用数组时,此代码无法正常工作。

更新-谢谢indexOf正常工作,但是我在var str上使用数组的方式似乎不起作用。

HTML

<tbody>
 <td><a href='#'>One</a></td>
 <td>No.</td>
</tbody>

jQuery

var array =  ['One', 'Two', 'Three', 'Four'];
var str = $('td:contains(" + array + ")').text();
if(array.indexOf(str) > -1){
 console.log('Array works');
}

任何帮助将不胜感激

2 个答案:

答案 0 :(得分:1)

您使用错误的方法。在这种情况下,您需要indexOf()的{​​{1}}原型,而不是字符串,因此您的逻辑应该是:

Array

答案 1 :(得分:1)

按照@BenM的指定,.indexOf()方法没有用这种方式。

也许该片段有用:

var array =  ['One', 'Two', 'Three', 'Four'];

// iterate over every <td> element found in the page with the .each() function
$('td').each(
    function(){
        if(array.indexOf($(this).text()) > -1){
            console.log('"' + $(this).text() + '" was found in the array');
        }
    }
);
<!DOCTYPE html>
<html>
    <head>
        <title>Test</title>
        <script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
    </head>
    <body>
        <table>
            <tbody>
             <td><a href='#'>One</a></td>
             <td>No.</td>
            </tbody>
        </table>
    </body>
</html>