2015-01-15 41 views
0

我设置子如果没有子字符串以避免控制台出错,如何跳过?

var hash = document.location.hash; 

// create an object to act like a dictionary to store each value indexed by its key 
var partDic = {}; 

// remove the leading "#" and split into parts 
var parts = hash.substring(1).split('&'); 

// If you just want the first value, whatever it is, use this. 
// But be aware it's a URL so can be set to anything in any order, so this makes little sense 
// var string = parts[0].split('=')[1]; 

// build the dictionary from each part 
$.each(parts, function(i, v) { 
// do the "=" split now 
var arr = v.split("="); 

// decode to turn "%5B" back into "[" etc 
var key = decodeURIComponent(arr[0]); 
var value = decodeURIComponent(arr[1]); 

// store in our "dictionary" object 
partDic[key] = value; 
}); 

setTimeout(function() { 
    var ag = partDic["comboFilters[Agencies]"].substring(1); 
    $('.Agency .dropdown-toggle').html(ag).append(' <span class="caret"></span>'); 
    var cl = partDic["comboFilters[Clients]"].substring(1); 
    $('.Client .dropdown-toggle').html(cl).append(' <span class="caret"></span>'); 
    var yr = partDic["comboFilters[Years]"].substring(1).slice(1); 
    $('.Year .dropdown-toggle').html(yr).append(' <span class="caret"></span>'); 
}, 1000); 

但是,如果没有一个子,我越来越:

Uncaught TypeError: Cannot read property 'substring' of undefined 

我猜我需要一个简单的if/else,但我不知道该如何这种情况下

+0

您可以发布存储内'partDic'内容的例子吗? –

+0

@RoryMcCrossan问题用完整代码更新 –

+0

如何使用try {} catch(){}? – Gogol

回答

0

使用

var cl = (partDic["comboFilters[Clients]"] && partDic["comboFilters[Clients]"].length>0)?partDic["comboFilters[Clients]"].substring(1):''; 
+0

如果'partDic [“comboFilters [Clients]”]'为空,它会抛出任何异常吗? –

+0

更新检查null – dev

+0

如果我有.slice(1)后面的子字符串,如.substring(1).slice(1)? –

0

使用条件,如:

If(partDic["comboFilters[Agencies]"].length>0) 
{ 
----your code--- 
} 
else{} 
+0

Uncaught TypeError:Can not读取未定义的属性“长度” –

+0

检查你在partDic中获得了什么[“comboFilters [Agencies]”]。val() –

0

Thanks to this answer,我得到这个作为一个解决方案:

if("comboFilters[Agencies]" in partDic) { 
    var ag = partDic["comboFilters[Agencies]"].substring(1); 
    $('.Agency .dropdown-toggle').html(ag).append(' <span class="caret"></span>'); 
} 
相关问题