2017-03-09 8 views
0

動的ファイルリストの各ドロップダウンアイテムの最後の4文字を削除しようとしています。動的文字列のJavascriptスライス文字

私はthis threadを読んだ後にjavascriptのスパイス構文を使用しようとしましたが、文字ではなくリスト内の他の項目の完全な文字列が削除されているようです。 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

あなたのリストオブジェクトにファイルをソートしていれば、私のansを見ればそれはあなたのために働くでしょう。 – user7417866

+0

@Abhitalksファイル名を選択し、ドロップダウン '<選択したクラス=「selectpicker1」名前は=「ファイル名」idは=「ovpnファイル名」>に表示され' – 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] = list[i].slice(0,-4); 
$("filename").append("<option>" + list[i] + "</option>"); 
}) 

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

を交換し、この

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

を試してみてください