2017-03-09 31 views
0

我正在嘗試刪除動態文件列表中每個下拉項目的最後四個字符。來自動態字符串的Javascript切片字符

我試過在閱讀this thread後嘗試使用javascript spice語法,但它似乎刪除了列表中其他項的完整字符串,而不僅僅是字符。 list = list.slice(0, -1);

我不確定我的方法有什麼問題。

function load_list() { 
      $("#filename").empty(); 
      $.ajax({ 
       type: 'GET', 
       dataType: 'json', 
       url: "/cgi-bin/list_cgi?action=get_list", 
       success: function(result) { 
        var list = result.file.sort(); 
        var current = result.current.split("/").pop(); 
        list = list.slice(0, -1); 
        if (list.length == 0) { 
         $("#unavailable").html("<h2>File not found, please upload.</h2>"); 
         show_upload(); 
         return; 
        } 
        for (var i in list) { 
         $("filename").append("<option>" + list[i] + "</option>"); 
              } 
        $("filename").val(current); 


       } 
      }); 
     } 
+2

不知道你的結果的結構,這將是幾乎不可能的人來幫助你。當你應該對'list [n]'或'list.file [n]'進行切片時,似乎你正在切分'list'。 – Abhitalks

+0

看到我的答案,如果你已經排序文件到你的列表對象它會爲你工作。 – user7417866

+0

@Abhitalks文件名顯示在一個選擇下拉菜單中' – pdev

回答

0

您正在切片數組而不是字符串。

嘗試在此循環中使用切片代替。

for (var i in list) { 
         list[i] = list[i].slice(0, -4); //remove last 4 characters 
         $("filename").append("<option>" + list[i] + "</option>"); 
       } 

更新:回答評論,

您可以使用

for (...) { 
     // use value attribute to ensure that the value is used in its entirety. 
     $("filename").append("<option value='" + list[i] + "'>" + list[i].slice(0, -4) + "</option>"); 
} 
+0

完美工作,謝謝 – pdev

+0

Niket,這個工作用於移除切片所以它現在顯示沒有字符,但它似乎已經停止表單提交正確。我不知道這是否是因爲它實際上刪除表單上的字符提交意味着它無法找到該文件。你知道是否可以隱藏角色? – pdev

+0

@pdev不客氣。更新了帖子以確保表單提交。 :) –

1

試試這個

$.each(list,function(i){ 
    list[i].slice(0, -4); 
}); 

假設你已經整理文件到列表對象..

或只需更換你的代碼

for (var i in list) { 
        $("filename").append("<option>" + list[i] + "</option>"); 
             } 

$.each(list, function(i){ 
list[i] = list[i].slice(0,-4); 
$("filename").append("<option>" + list[i] + "</option>"); 
})