2012-02-25 52 views
0

我不得不從鑑於字符串對象轉換

<div id="someif" array-data="2012-03-01:1,2012-03-11:1,2012-03-21:1"></div> 
var mystring={2012-03-01:1,2012-03-11:1,2012-03-21:1} 

採取當前字符串,需要這個js對象創建

var dates_allowed = { 
     '2012-03-01': 1, 
     '2012-03-11': 1, 
     '2012-03-21': 13 
}; 

我已經嘗試了,但沒有結果 - 我得到錯誤

jQuery.parseJSON(myString); 

謝謝!

+3

'陣列data'?更好,如果你寫'數據數組' – dynamic 2012-02-25 10:49:31

回答

1

解決方案

與您現有的HTML工作,你可以做這樣的事情:

var dates_allowed = {}; 

$('#someif').attr('array-data').split(',').each(function(){ 
    var date = this.split(','); 
    dates_allowed[date[0]] = date[1]; 
}); 

更好的解決方案

但在我看來,你會更好利用jQuery data通過更改您的HTML如下所示:

<div id="someif" data-dates="{&quot;2012-03-01&quot;:1,&quot;2012-03-11&quot;:1,&quot;2012-03-21&quot;:1}"></div> 

,並使用以下的JavaScript:

var dates_allowed = $('#someif').data('dates'); 

scessor's example JSFiddle

+0

var dates_allowed = $('#someif')。data('dates'); 值未定義 – 2012-02-25 11:04:34

+0

您的'更好的解決方案'將返回一個字符串,因爲單引號不是json有效的字符串包裝(參見[json documentation](http://www.json.org/))。將它們更改爲雙引號'"e;'。另請參閱[本示例](http://jsfiddle.net/yALyS/)。整數值不需要用引號括起來。 – scessor 2012-02-25 11:04:36

+0

@scessor:謝謝指出! – 2012-02-25 11:05:29

0

您無法解析像一個字符串 '2012-03-01:1,2012-03-11:1,2012-03-21:1' JSON

此字符串將解析的:

'[{"allowed":"2012-03-01","index":"1"}, {"allowed":"2012-03-11","index":"1"},{"allowed":"2012-03-21","index":"1"}]' 

所以,用作data attribute

<div id="someif" data-allowed='[{"allowed":"2012-03-01","index":"1"}, {"allowed":"2012-03-11","index":"1"},{"allowed":"2012-03-21","index":"1"}]'> 

var myAllowedDates = JSON.parse($('#someif').attr('data-allowed')); 

參見this jsfiddle