2009-12-10 43 views
2

說我有一個變量如何編輯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

回答

1

如果document.location.hash總是包含tab_ +您希望檢索的其他字符串,爲什麼不利用前綴長度始終相同?你已經撥打了substring(),爲什麼不讓這個功能減少幾個字?

window.location.hash.substring(5) 

由於CMS對指出window.location優選document.location

0

是的,這是一個標準的JavaScript函數,已經足夠覆蓋所有現代瀏覽器ie6和更高版本。應該工作得很好。

如果您知道它始終是前4個字符,您也可以使用子字符串。 tabSelect.substring(4)會給你tab_(這是從0開始)之後的第一個字符。

1

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

+0

如果你知道你總是想刪除字符串的第一個「k」字符,你甚至不需要使用replace。我的答案。 – 2009-12-10 14:46:16

2

濫用源代碼重寫作爲反射的替代是......可能的。我不想陳述這個明顯的問題,但是:也許退一步看看你是否可以重塑這個項目,這樣你就可以想出一個更清晰的解決方案了?

+2

我不認爲OP想做任何類型的源代碼重寫,但問題的標題肯定會使它聽起來那樣。 – 2009-12-10 14:43:23

+0

這樣做到了我的頭,但我需要兩個變量,因爲tab_something,顯示一個相關的div元素,而某些東西在導航欄上突出顯示。 (是的,它可能應該是相反的方式) – daulex 2009-12-10 14:53:57

2

幾件事情:

  • 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