【问题标题】:Why is 'indexOf' not returning anything?为什么'indexOf'没有返回任何东西?
【发布时间】:2011-10-19 19:17:12
【问题描述】:

book I am reading 告诉我打开 JavaScript 控制台并尝试代码 "foo: bar".indexOf(":")。我已经尝试了很多方法。我尝试删除引号,将其放在 show()alert() 函数中。我似乎无法挑逗任何事情。

JavaScript 有什么变化吗?作者是不是搞错了?我不应该得到回报吗?也许我需要附加 document.write 吗?非常感谢任何帮助。

【问题讨论】:

  • jsfiddle.net/MKEc2 - 工作正常。警报 3,因为索引是基于 0 的。
  • 至少在 FireBug 控制台中,它显示(正确)3
  • 正如所有答案和 cmets 所建议的那样,您正在做的事情应该返回一个值。我怀疑你没有在这里讲述整个故事,我投票决定关闭“过于本地化”,因为这个问题不太可能帮助任何未来的网站访问者。
  • 我同意。它适用于 Chrome 的CTRL-Shift-J。失败的只是本书附带的控制台。
  • 我不知道,安迪。这本书很受欢迎。不过,您可以根据需要投票关闭。

标签: javascript methods indexof


【解决方案1】:

是的,在 Firefox 5+ 中有所改变 但是控制台(ctrl-shift-k)仍然有效

在错误控制台(ctrl-shift-J)中,您需要将其包装在警报中:

【讨论】:

  • 我认为这个答案是最好的,因为如果将来有人看它,它会告诉他们如何在流行的浏览器中打开 JavaScript 解释器。我也喜欢 skk,因为它使用了 alert() 的替代品。谢谢。
【解决方案2】:

foo:bar 是json中的一个属性定义,indexOf应该是处理一个左值(字符串变量,常量,或者至少里面可以有字符的东西。我不知道你是什么书阅读希望你这样做,但它似乎不正确。使用 indexOf 的正确方法是:

var myObject = {
   foo:"bar"
}

alert(myObject.foo.indexOf("a"));

【讨论】:

  • 等等...你是说"foo:bar".indexOf(":")indexOf()不正确使用吗?
  • "foo:bar".indexOf(":") 应该适用于每个浏览器(IE 7 和更早版本..我从未测试过大声笑)。 "foo":bar.indexOf(":") 不会,并且可能任何其他放置引号的方式都不会。当您谈论“控制台”时,为什么需要在那里编写代码?
  • Fred,我只是使用控制台,因为它很方便。这本书要求我这样做以查看它返回什么,以便我可以完成一个练习。我在没有使用indexOf() 的情况下完成了它,但后来他们非常依赖它,所以我想单独看一下。
【解决方案3】:

尝试如下,它应该可以工作。通常,如果要搜索的值从未出现,则 indexOf() 将返回 -1。

var str="foo:bar";
document.write(str.indexOf(":") + "<br />");

输出应该是 3

【讨论】:

  • 不适用于本书。不过,它会刷新我的页面并在 Chrome 中显示“3”。谢谢。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2023-04-10
  • 2023-02-07
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多