如何将所选列表转换为javascript中的自定义列表?

时间:2014-09-12 16:17:26

标签: javascript

我在html上有两个选择框。根据选定的项目,我需要将所选项目转换为列表 像这样:

c("item1", "item2", "item3")

jsfiddle example

$("#submitbutton").on("click", function(){


var jsonData=JSON.parse(    "[{\"id\":1,\"desc\":\"Date\"},{\"id\":2,\"desc\":\"CPU\"}]"
);

var $select = $('#yaxis');
                      $(jsonData).each(function (index, o) {    
                      var $option = $("<option/>").attr("value", o.desc).text(o.desc);
                      $select.append($option);
                    });

                   var $select1 = $('#xaxis');
                      $(jsonData).each(function (index, o) {    
                      var $option1 = $("<option/>").attr("value", o.desc).text(o.desc);
                      $select1.append($option1);
                    });   
})

$("#selectitems").on("click", function(){
     var names=$("#xaxis").val();
      var names1=$("#yaxis").val();
      var param=names+","+names1;
    console.log(param);
})

submitbutton构建选定的框,selectitem需要返回所选项目。例如,在jsfiddle示例中,如果我选择CPU和Date,我的参数列表应该是这样的:

console.log(param)
c("CPU","Date")

我试过这样的事情:

$("#selectitems").on("click", function(){
     var names=$("#xaxis").val();
      var names1=$("#yaxis").val();
      var param=names+","+names1;
    param="c("+param+")";
    param=param.split(",");
    console.log(param);

})

console.log(param),显示如下:

["c(DateTime", "CPU)"] 

我需要param输出如下:

c("DateTime", "CPU")

更新update jsfiddle example

2 个答案:

答案 0 :(得分:1)

我认为你希望你的点击处理程序更像是这样:

$("#selectitems").on("click", function(){
   var values = [];
   $("#xaxis option:selected, #yaxis option:selected").each(function() {
     values.push('"' + $(this).text() + '"');
   });
   param="c(" + values.join(",") + ")";
   console.log(param);
})

updated jsfiddle

答案 1 :(得分:0)

而不是尝试构建一个参数列表,为什么不使用apply()

e.g。

$("#selectitems").on("click", function(){
     var selected = $("#xaxis option:selected, #yaxis option:selected").map(function() {
         return $(this).text();
     });
     c.apply(null,selected); 
});

这是一个证明这一点的小提琴:http://jsfiddle.net/84zugx8p/11/