【问题标题】:jQuery Replacing, Using arraysjQuery 替换,使用数组
【发布时间】:2012-09-02 15:15:48
【问题描述】:
var searchp   = $('body'),
    searchval = searchp.html(),
    name      = ['Abraham Lincoln', 'George Washington'];
    cname     = name.toLowerCase().replace(/ /g, ''),
    restr     = searchval.split(name).join('<a href="#" data-name="'+cname+'">'+name+'</a>');

searchp.html( replacestr );

我需要一些关于替换功能的帮助。如果我使用 name='string name',它可以正常工作,但我无法让它与数组一起使用。 希望你能帮助我。

【问题讨论】:

  • 替换所有出现的拆分/连接技术仅适用于字符串。如果要使用数组,则必须循环。
  • 仅供参考,在数组后面有一个;,它生成了cnamerestr 全局变量。我更喜欢在每一行(var 下方)使用前导逗号,而不是尾随逗号,以便清楚地表明所有逗号都存在。

标签: javascript jquery arrays replace


【解决方案1】:

您尝试在不提供 toLowerCase() 方法的数组上调用 toLowerCase()。相反,您应该在该数组中指定一个项目,例如:

cname     = name[0].toLowerCase().replace(/ /g, ''),

这很容易发现你打开浏览器的控制台,因为在 Chrome 中运行它给了我这样的消息:

Uncaught TypeError: Object Abraham Lincoln,George Washington has no 方法'toLowerCase'

您的问题上的 cmets 表明您可能不想硬编码元素的索引,而是使用循环。我试图摆弄您的代码,但似乎缺少来自 #body 的一些输入以在您的行中获得一些语义,所以我只能提供一个建议如何循环遍历一组 srings:

var name = ['Abraham Lincoln', 'George Washington'];
$(name).each(function(key, value){
    console.log(value.toLowerCase());
});

​

【讨论】:

  • 非常感谢。我让它工作了,但是我将 replacestr 变量放在每个函数中,所以它被第二个数组项覆盖。除此之外它有效。我也改变了这个: var replacestr = searchval.replace(regexname, ''+name+'') ;
猜你喜欢
  • 2011-11-05
  • 1970-01-01
  • 2023-04-02
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2010-09-11
相关资源
最近更新 更多