2011-12-28 37 views
1

讓說我們是天花板高度URL字符串:由字符串分割,並檢查零件,以防止錯誤

http:/domain.com/en/#{html file}/{id of the div}-{level} 

這樣我可以知道:

http:/domain.com/en/#the-file.html/section-4 

在那裏我有成文

var info = window.location.hash; 
var temp = info.split("/"); 
var url = temp[0]; 
url = str_replace('#','',url); 
var temp1 = temp[1]; 
temp1 = temp1.split('-'); 
var seccion = temp1[0]; 
var nivel = temp1[1]; 

其中

console.log('url: '+url); 
console.log('info: '+nivel); 
console.log('seccion: '+seccion); 

我提供這些編纂瓦爾

問題時,例如,URL是

http://domain.com/es/ 

是螢火蟲跳這個錯誤:

temp1 is undefined 

任何想法如何預防?

回答

2

而不是使用split,我建議使用RegExp,當多個斜槓或連字符出現時不會中斷。

以下代碼將始終定義變量url,nivelseccion。如果散列不存在,這些變量將是一個空字符串。

var info = window.location.hash.match(/^#(.*?)\/(.*?)-(.*)$/), 
    url="", nivel="", seccion=""; 
if (info) { 
    url = info[1]; 
    nivel = info[2]; 
    seccion = info[3]; 
} 
+0

嘿!謝謝!工作和看起來更好:) – 2011-12-28 13:01:27

1

split方法並不默認在Internet Explorer中工作,你必須找到a workaround,這就是爲什麼一個正則表達式的方法會更好。但是,如果您仍想使用拆分,則可以使用temp.length來查看該變量中存儲了多少個字符串。

+0

錯誤不是由IE中的不兼容性問題引起的,錯誤是由數組大小爲0或1,如果沒有找到匹配的事實引起的。因此,'temp [1]'是未定義的。因此,'temp [1] .split'會拋出一個ReferenceError。 – 2011-12-28 13:11:02

+0

@Rob我知道,這就是爲什麼我推薦temp.length,但是如果他使用split,他應該記住,這將在IE中破解。 – 2011-12-28 13:14:05