繁体   English   中英

javascript:object对象而不是set =(

[英]javascript: object Object instead of value from set =(

因此,我试图基于下拉过滤器来绘制相同的数据,但是我并没有过去将数据存储到传递给绘图函数的变量中。 我的警报给出了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);

filter.val()最有可能是字符串"totalValue"

d[filter.val()] (或d["totalValue"] )将是对象d的属性totalValue的值,该对象dalert的对象,因此是alert的输出Object object ,因为这是的默认字符串表示形式这样的通用对象。

并且[d[filter.val()]]是一个数组,其中一个元素即上述对象。

要进行调试,建议您使用调试器(例如Firebug),因为它可以以可读形式显示对象。

或使用.toSource()方法:

alert(data.toSource());

如果d对象的所有成员都与所示成员相似,并且d在范围内,则alert(data)将始终显示“ object Object”。

如果filter.val()为“ totalValue”,则数据将为对象:

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

它没有显式的toString方法,因此将使用默认的toString

尝试alert(data.label) ,希望它会显示“ Total”。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM