如何编辑JavaScript变量?

问题描述:

说我有一个变量如何编辑JavaScript变量?

tab_something 

我需要删除tab_位。

在PHP中很容易,使用str_replace ...

威尔

tabSelect = document.location.hash.substr(1,document.location.hash.length); 

(这将永远是tab_something

document.write(tabSelect.replace(/tab_/i, "")); 

工作的方式,我想它,始终如一跨所有现代浏览器(即6 +)?

干杯。

+9

提到IE6作为一个“现代浏览器”可能是一个有点拉伸:) – 2009-12-10 14:35:26

+1

问题是IE6仍然是“现代使用”,很多我们的沮丧 – 2009-12-10 14:37:30

+0

+1好问题:) – 2009-12-10 14:38:44

如果document.location.hash总是包含tab_ +您希望检索的其他字符串,为什么不利用前缀长度始终相同?你已经拨打了substring(),为什么不让这个功能减少几个字?

window.location.hash.substring(5) 

由于CMS对指出window.location优选document.location

是的,这是一个标准的JavaScript函数,已经足够覆盖所有现代浏览器ie6和更高版本。应该工作得很好。

如果您知道它始终是前4个字符,您也可以使用子字符串。 tabSelect.substring(4)会给你tab_(这是从0开始)之后的第一个字符。

是的。另外请注意,您不必在.replace()中使用正则表达式,.replace('tab_', '');就可以。

+0

如果你知道你总是想删除字符串的第一个“k”字符,你甚至不需要使用replace。我的答案。 – 2009-12-10 14:46:16

滥用源代码重写作为反射的替代是......可能的。我不想陈述这个明显的问题,但是:也许退一步看看你是否可以重塑这个项目,这样你就可以想出一个更清晰的解决方案了?

+2

我不认为OP想做任何类型的源代码重写,但问题的标题肯定会使它听起来那样。 – 2009-12-10 14:43:23

+0

这样做到了我的头,但我需要两个变量,因为tab_something,显示一个相关的div元素,而某些东西在导航栏上突出显示。 (是的,它可能应该是相反的方式) – daulex 2009-12-10 14:53:57

几件事情:

  • document.location会在某个时候被document.URL被弃用,请考虑使用window.location
  • 考虑到也使用String.substring,因为它是ECMA-262规范的一部分。

var tabSelect = window.location.hash.substring(1); // remove "#" 
tabSelect = tabSelect.replace(/tab_/i, "");  // remove "tab_" 

它将在古老与现代浏览器。

+0

非常感谢您的提示。 – daulex 2009-12-10 17:41:56