如何编辑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 +)?
干杯。
如果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_', '');
就可以。
如果你知道你总是想删除字符串的第一个“k”字符,你甚至不需要使用replace。我的答案。 – 2009-12-10 14:46:16
滥用源代码重写作为反射的替代是......可能的。我不想陈述这个明显的问题,但是:也许退一步看看你是否可以重塑这个项目,这样你就可以想出一个更清晰的解决方案了?
我不认为OP想做任何类型的源代码重写,但问题的标题肯定会使它听起来那样。 – 2009-12-10 14:43:23
这样做到了我的头,但我需要两个变量,因为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_"
它将在古老与现代浏览器。
非常感谢您的提示。 – daulex 2009-12-10 17:41:56
提到IE6作为一个“现代浏览器”可能是一个有点拉伸:) – 2009-12-10 14:35:26
问题是IE6仍然是“现代使用”,很多我们的沮丧 – 2009-12-10 14:37:30
+1好问题:) – 2009-12-10 14:38:44