2010-08-27 28 views
1

因此,我試圖根據下拉過濾器繪製相同的數據,但是我沒有過去將數據存儲到傳遞給繪圖的變量功能。我的警報給object Object,但應該不會是totalValue(在這個例子中)?javascript:object對象而不是集合中的值=(

的HTML

<select id="performance_chart_filter"> 
    <option value="totalValue">Total by Value</option> 
    <option value="openValue">Open by Value</option> 
    <option value="declinedValue">Declined by Value</option> 
    <option value="acceptedValue">Accepted by Value</option> 
</select> 

的JavaScript

$j("#performance_chart_filter").change(function(){ 
    plotWithChoice(); 
}); 



function plotWithChoice() { 
    var d = { 
     "totalValue": { 
      label: "Total", 
      clickable: true, 
      hoverable: true, 
      data: <%= @total %> 
     } 
. 
. 
. 
}; 

    var filter = $j("#performance_chart_filter"); 
    var data = [d[filter.val()]]; 
alert(data); 

回答

2

編號filter.val()很可能是字符串"totalValue"

d[filter.val()](或d["totalValue"])將所述對象d,它是一個對象因此輸出的alertObject object的屬性totalValue的值,因爲這是這樣一個通用對象的默認字符串表示。

[d[filter.val()]]是一個數組,其中有一個元素即上述對象。

要調試這個,我建議你使用一個調試器(如Firebug),因爲它可以以可讀形式顯示對象。

或者使用.toSource()方法:

alert(data.toSource()); 
1

如果d對象的所有成員類似於示出的一個,和d是在範圍,然後alert(data)將始終將顯示「對象的對象」。

如果filter.val()是「總價值」,則數據將是對象:

{ 
    label: "Total", 
    clickable: true, 
    hoverable: true, 
    data: <%= @total %> 
} 

這並沒有一個明確的toString方法,所以默認toString將被使用。

嘗試alert(data.label),希望這會顯示「總計」。

相關問題