【问题标题】:How to use indexOf() method on parameter?如何在参数上使用 indexOf() 方法?
【发布时间】:2016-12-06 04:06:39
【问题描述】:

我正在使用 dragula.js,并在 mycode 中使用 ondrop 事件,

drake.on('drop', function (el) {
    console.log(el);                       //result <div>foo bar</div>
    var n = typeof(el);                    //return object
    var x = el.indexOf("test");            //error TypeError: el.indexOf is not a function(…)
    // do another code
    })

我想检查"test" 是否存在于el 参数上,但出现错误。谢谢。

【问题讨论】:

  • n 是否返回适当的类型?
  • 不,我知道它返回对象类型,正如@skyline 所说,它不能使用indexOf
  • 为什么不使用 console.log(n)
  • 代码旁边的注释来自console.log(n)。与 console.log(x) 相同,结果为错误。

标签: javascript dragula


【解决方案1】:

我觉得应该和if ('test' in el)一样简单

【讨论】:

  • 即使我使用存在于el 参数上的foo 也不起作用
【解决方案2】:

使用 dom。大致:el.parentElement.children.indexOf(el)

已解决 - https://github.com/bevacqua/dragula/issues/209

【讨论】:

    【解决方案3】:

    indexOf 适用于字符串,因此您需要使用元素的文本而不是元素本身来调用它,如下所示:

    el.textContent.indexOf("test");
    

    编辑:

    看起来你想要拖动元素的索引而不是匹配它的文本:

    [].slice.call(el.parentElement.children).indexOf(el)
    

    【讨论】:

    • 错误消失了,但即使我发现 foo 存在于 el 参数中,代码也不起作用。它返回 -1。
    • 您要检查“测试”是什么意思? &lt;div&gt; 包含字符串 foo 和 bar,显然“test”不是其中之一。您的意思是“测试”是&lt;div&gt; 的属性吗?喜欢&lt;div test="test"&gt;foo bar&lt;/div&gt;?您期望什么条件为真?
    • 全部,包括属性、标签和文本。谢谢帮助,这个问题已经解决了我在这里等待答案时在github中找到了答案。
    猜你喜欢
    • 1970-01-01
    • 2023-01-22
    • 1970-01-01
    • 2010-12-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-07-22
    • 1970-01-01
    相关资源
    最近更新 更多