javascript - 在 JavaScript 函数中传递可选参数

标签 javascript ruby-on-rails ruby-on-rails-3 rails-3.0.10

是否可以将可选参数传递给 javascript 中的函数?

我在 JavaScript 中有一个函数,我想要 recicly,所以,我想在函数中使用 var 选项,而不是为参数传递变量。

我的功能如下:

JavaScript:

function DrawChartPie(rows, title, chart_div, legend_position) {
google.load("visualization", "1", {packages:["corechart"]});
    google.setOnLoadCallback(drawChart);
    function drawChart() {
        var data = new google.visualization.DataTable();
        data.addColumn('string', 'Tipo');
        data.addColumn('number', 'Quantidade');
        data.addRows(rows);

        var options = {
            width: 450,
            height: 250,
            title: title,
            legend: legend_position,
        backgroundColor: 'transparent',
                    is3D: true,
                    chartArea: {width:"90%"}
        };

        var chart = new google.visualization.PieChart(document.getElementById(chart_div));
        chart.draw(data, options);
    }

helper :

 html = pie_chart(data, title, div, pos_leg)

我想做的,但没有用:

helper :

 def pie_data(data_pie, div, options = {})
 ....
 optional = {
            width: 900,
            height: 500,
            title: title,
            legend: pos_leg,
        backgroundColor: 'transparent',
                    is3D: true,
                    chartArea: {width:"90%"}
        };
...
html = pie_chart(data, title, div, pos_leg, optional)

JavaScript:

function DrawChartPie(rows, title, chart_div, legend_position, optional = {}) {
google.load("visualization", "1", {packages:["corechart"]});
    google.setOnLoadCallback(drawChart);
    function drawChart() {
        var data = new google.visualization.DataTable();
        data.addColumn('string', 'Tipo');
        data.addColumn('number', 'Quantidade');
        data.addRows(rows);

        var option = optional || {
            width: 450,
            height: 250,
            title: title,
            legend: legend_position,
        backgroundColor: 'transparent',
                    is3D: true,
                    chartArea: {width:"90%"}
        };

        var chart = new google.visualization.PieChart(document.getElementById(chart_div));
        chart.draw(data, option);
    }
}

当我尝试这样做时,什么都不显示。

有可能做这样的事情吗?如果是,有人可以帮助我吗?

谢谢 =] 对不起我的英语:P

----更新---- 我按照建议更新了我的方法,但现在我遇到了另一个错误。

JavaScript:

 function DrawChartPie(rows, title, chart_div, legend_position, optional) {
 ...
 var optional = optional || {
            width: 450,
            height: 250,
            title: title,
            legend: legend_position,
        backgroundColor: 'transparent',
                    is3D: true,
                    chartArea: {width:"90%"}
        };
 ...

 }

helper :

 def pie_data(data_pie, div, options = {}){
 ...
 optional = {
            width: 900,
            height: 500,
            title: title,
            legend: pos_leg,
        backgroundColor: 'transparent',
                    is3D: true,
                    chartArea: {width:"90%"}
        };
  html = pie_chart(data, title, div, pos_leg, optional)
  }

我的错误:参数数量错误(5 对 4)

我已经重启了我的服务器 :P

最佳答案

有点。从技术上讲,所有 JavaScript 参数都是可选的,默认为 undefined。这就是您拥有不同默认参数的方式。

function DrawChartPie(rows, title, chart_div, legend_position, optional) {
  optional = optional || {};

如果您期望伪值,例如 nullNaN0""(空字符串) , 和 false,作为可选参数的值,你可以用这个代替:

function DrawChartPie(rows, title, chart_div, legend_position, optional) {
  optional = optional === undefined ? {} : optional;

关于javascript - 在 JavaScript 函数中传递可选参数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22635900/

相关文章:

javascript - 从函数返回 json 对象

javascript - 在返回 View 中传递 json 作为参数

ruby-on-rails - Errno::EIO: 输入/输出错误 - <STDOUT>

javascript - Codecademy - 我的代码返回 true,但它说我错过了其他东西?

ruby-on-rails - 设计中的范围究竟是什么?

ruby-on-rails - cucumber 、 capybara 和 ElementNotFound

mysql - Rails 时区 - 本地主机和生产服务器之间的结果不同

ruby-on-rails - 由 Yard 和西类牙口音生成的文档

ruby-on-rails - Rails 3.2 流媒体

javascript - 有没有办法为 createElement 对象分配唯一 ID?