繁体   English   中英

如何编辑JavaScript变量?

[英]How can I edit a JavaScript variable?

说我有一个变量

tab_something

我需要删除tab_位。

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

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

(始终为tab_something

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

在所有现代浏览器(ie6 +)中始终如一地以我希望的方式工作?

干杯。

滥用源代码重写来代替反射是可能的。 我不愿意表述显而易见的内容,但是:也许退后一步,看看是否可以重新调整项目的形状,以便可以提出更清洁的解决方案?

有两件事:

  • 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_"

它可以在旧的和现代的浏览器上运行。

是的,它会的。 还要注意,您不必在.replace() .replace('tab_', '');使用正则表达式.replace('tab_', ''); 会很好的。

如果document.location.hash始终包含tab_ +您希望检索的其他字符串,为什么不利用前缀始终保持相同的长度呢? 您已经有调用substring()原因,为什么不让此函数切入更多的字符呢?

window.location.hash.substring(5)

感谢CMS指出window.locationdocument.location更可取。

是的,这是一个标准的JavaScript函数,已经使用了很长时间,足以覆盖所有现代浏览器(即6或更高版本)。 应该工作正常。

如果您知道子字符串将始终是前4个字符,则也可以使用子字符串。 tabSelect.substring(4)将为您提供一切,它们从tab_之后的第一个字符开始(从0开始)。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM