所以,我试图根据下拉过滤器绘制相同的数据,但我没有通过将数据存储到传递给绘图函数的变量。我的提醒提供object Object
,但不应该是totalValue
(对于此示例)?
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);
答案 0 :(得分:2)
没有。 filter.val()
很可能是字符串"totalValue"
。
d[filter.val()]
(或d["totalValue"]
)将是对象totalValue
的属性d
的值,它是一个对象,因此输出Object object
alert
,因为这是像这样的通用对象的默认字符串表示。
[d[filter.val()]]
是一个包含一个元素的数组,即上面提到的对象。
要调试这个,我建议您使用调试器(例如Firebug),因为它可以以可读的形式显示对象。
或使用.toSource()
方法:
alert(data.toSource());
答案 1 :(得分:1)
如果d对象的所有成员与显示的成员相似,并且d在范围内,则alert(data)
将始终显示“object object”。
如果filter.val()
是“totalValue”,那么数据将是对象:
{
label: "Total",
clickable: true,
hoverable: true,
data: <%= @total %>
}
这没有明确的toString
方法,因此将使用默认的toString
。
尝试alert(data.label)
,希望这会显示“总计”。