2017-02-27 19 views
0

を使用して入力ボックスを削除するので、私は何をしようとしていますが、リスト内の最後の入力ボックスを削除するには、入力ボックスには、追加のjavascript

2.remove機能を追加するために

1.add機能を持つことです

3.sort機能は

は、私は私の追加機能が働いていると思いアルファベット順で入力テキストのリストをソートするには、しかし、私は最後の入力ボックスを削除しようとしたり並べ替えしようとしているときに問題に実行していますそれ。 アイデアや提案は非常に高く評価されます。あなたのソート機能は、フォーム[「MainFormを」]要素内の要素を探している間にあなたの追加機能は、身体に直接入力を追加するように感謝

<form id="mainform" > 
 
<button onclick="add()">add</button> 
 
<button onclick="remove()">remove</button> 
 
<button onclick="sort()">sort</button> 
 
</form> 
 

 
<script> 
 
    var i = 0; 
 
    var count =0; 
 
    function add() { 
 
     var x= document.createElement("INPUT"); 
 
     x.setAttribute("type", "text"); 
 
     x.setAttribute("placeholder", "Name"); 
 
     i += 1; 
 
     count=count+1; 
 
     document.body.appendChild(x); 
 
    }  
 
    function remove(){ 
 
     i -= 1; 
 
     count=count-1; 
 
    } 
 
    
 
    function sort(){ 
 
     var x; 
 
     x=count; 
 
     var strings=[] 
 
     var t; 
 
     var i=0; 
 
     t=x; 
 
     while(t!=0){ 
 
       strings.push(document.forms["mainform"].elements[i].value); 
 
       t=t-1; 
 
       i=i+1} 
 
    
 
     strings=strings.sort() 
 
     var j=0; 
 
     var msg=''; 
 
     while(x!=0){ 
 
       var msg=msg+strings[j]+'\n'; 
 
       document.forms["mainform"].elements[j].value=strings[j]; 
 
       j=j+1; 
 
       x=x-1;} 
 
    } 
 
</script>

+1

エラーメッセージを表示するか、エラーメッセージが表示されない理由を明記してください。 – Turtle

+0

あなたの削除機能は要素に対して何もしていないので、ユーザーに表示したくない場合は、displayをnoneに設定して非表示にすることができます。 –

答えて

0

が見えます。

あなたの削除関数は、フォームにまったく影響を与えずにイテレータを減らしています。仕事をするだろう

0

<form id="mainform" > 
 
    <input type="button" value="add" onclick="add()"></input> 
 
    <input type="button" value="remove" onclick="remove()"></input> 
 
    <input type="button" value="sort" onclick="sort()"></input> 
 
    </form> 
 
    
 
    <script> 
 
     function add() { 
 
      var x= document.createElement("INPUT"); 
 
      x.setAttribute("type", "text"); 
 
      x.setAttribute("placeholder", "Name"); 
 
      x.setAttribute("class", "someInput"); 
 
      document.body.appendChild(x); 
 
     } 
 
     
 
     function remove() { 
 
      var childs = document.body.getElementsByClassName("someInput"); 
 
      if(childs.length > 0) { 
 
      document.body.removeChild(childs[childs.length - 1]); 
 
      } 
 
     } 
 
     
 
     function sort(){ 
 
      var hash = {}; 
 
      var childs = document.body.getElementsByClassName("someInput"); 
 
      
 
      // Map each element to its value 
 
      for(var i = 0; i < childs.length; i++) { 
 
      var currentElement = childs[i]; 
 
      hash[currentElement.value] = currentElement; 
 
      } 
 
      
 
      // Remove all added elements 
 
      for(var i = 0; i < childs.length; i++) { 
 
      var currentElement = childs[i]; 
 
      document.body.removeChild(currentElement); 
 
      } 
 
      
 
      // Sort by map keys, and add all elements back sorted 
 
      Object.keys(hash).sort().forEach(function(v, i) { 
 
      document.body.appendChild(hash[v]); 
 
      }); 
 
     } 
 
    </script>

私が提出されてからフォームを防ぐためにinput要素を持つbutton要素を置き換えることに注意してください。

また、挿入された各テキストボックスに「someInput」という名前のクラスをマークしていることにも注意してください。そうすれば、挿入されたすべてのテキストボックスを照会して取得したいときに、私たちの生活が楽になります。

関連する問題