【问题标题】:How to use Array and IndexOf together?如何同时使用 Array 和 IndexOf?
【发布时间】:2018-12-18 13:47:27
【问题描述】:

我正在尝试创建一个字符串数组并使用 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');
}

任何帮助将不胜感激

【问题讨论】:

  • 请记住,$('td').text() 将返回页面上每个 td 的文本内容。 "OneNo." 在提供的情况下。
  • 该数组似乎不适用于 var str = $('td:contains(" + array + ")').text();我用错了吗?如果我问的问题是基本的,我仍在学习抱歉。
  • str 命中 if 语句时的值是多少?
  • 你可以打开控制台查看'td:contains(" + array + ")'是什么。然后打开 jquery docs 检查包含选择器的工作方式。将整个数组传递给选择器将不起作用。
  • 它可以是数组 ['One', 'Two', 'Three', 'Four' ....] 中的任何东西,因为 值改变了为什么我我正在尝试将其保留为数组。

标签: javascript jquery html


【解决方案1】:

您以错误的方式使用它。在这种情况下,您需要ArrayindexOf() 原型,而不是字符串,所以您的逻辑应该是:

if( array.indexOf(str) > -1 )
{
  // Do stuff!
}

【讨论】:

  • 其实也是一个String原型方法
【解决方案2】:

正如@BenM 指定的那样,.indexOf() 方法不是这样使用的。

也许这个 sn-p 会有用:

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>

【讨论】:

  • 谢谢,这是我一直在寻找的东西,它可以工作,再次感谢
猜你喜欢
  • 2014-08-20
  • 1970-01-01
  • 2022-10-24
  • 1970-01-01
  • 2016-01-08
  • 1970-01-01
  • 1970-01-01
  • 2014-08-20
  • 2013-01-19
相关资源
最近更新 更多