2014-09-12 73 views
0

我在html上有兩個選擇框。根據選擇的項目,我需要選擇的項目轉換爲列出 這樣的:如何將選定列表轉換爲JavaScript中的自定義列表?

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); 
}) 

提交按鈕建立了選擇框和選擇信息需要返回選定的項目。例如,在的jsfiddle例如,如果我選擇CPU和日期,我PARAM名單應該是這樣的:

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

+0

而不是'JSON.parse()來',你爲什麼不只是使用對象文本? – royhowie 2014-09-12 16:32:55

+0

@royhowie,我正在這樣做,這部分正在爲我工​​作。我只需要輸出到c(「CPU」,「Date」)格式。我更新了帖子。但我真的不想看到圍繞[]的字符串,任何想法? – user1471980 2014-09-12 16:34:31

+1

'c(「item1」,「item2」,「item3」)'不是一個列表,它是一個函數調用。我不知道你在試圖擺脫這一點。 – lincolnk 2014-09-12 16:50:29

回答

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

+0

這是好的,我會接受答案。一個小問題。當我傳遞給另一個函數時,我發現它傳遞的形式如下:「c(\」Date \「,\」CPU \「)」),是否有一個JavaScript函數,我將解析出\?只需將值傳遞爲c(「Date」,「CPU」)? – user1471980 2014-09-12 17:18:21

+0

這一切都最終取決於您打算如何使用此字符串值,但反斜槓僅表示該字符串包含雙引號,並且使用反斜槓進行轉義。 – intheweeds 2014-09-12 17:41:42

0

,而不是試圖構建的參數列表爲什麼不使用apply()

例如

$("#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/

相關問題