javascript
  • html
  • 2016-11-05 7 views 0 likes 
    0

    私が生成しているテーブルがあり、それにはソートボタンがあります。私は、ユーザがソートしたい列を取得したいが、私は「byColumn」から値を取得しようとすると、ソートで未定義の値を取得しておいてください。 いくつかの助けをいただければ幸いです。フォームsubmit submit Undefined value

    function createTable(data){ 
          var str = "<form id='tableSelect' action='javascript:void(0);'><table><thead><tr> <th>TicketNum</th><th>Recieved</th><th>SenderName</th><th>Sender Email</th><th>Subject</th><th>Tech</th><th>Status</th><th>Select</th></tr></thead><tbody>"; 
    
          for(var key in data){ 
           if (!data.hasOwnProperty(key)) continue; 
           var row = data[key]; 
           str += "<tr> <td>"; 
           str += row['TicketNum'] + "</td><td>"; 
           str += row['Recieved'] + "</td><td>"; 
           str += row['SenderName'] + "</td><td>"; 
           str += row['SenderEmail'] + "</td><td>"; 
           str += row['Subject'] + "</td><td>"; 
           str += row['Tech'] + "</td><td>"; 
           str += row['Status'] + "</td><td>"; 
           str += "<input type='radio' name ='selectRow' value=" +row['TicketNum'] + ">" + "</td></tr>"; 
          } 
          str += "<tr><td> Sort By: <input type = 'radio' name = 'byColumn' value='TicketNum'><td> Sort By: <input type = 'radio' name = 'byColumn' value='Recieved'><td> Sort By: <input type = 'radio' name = 'byColumn' value='SenderName'><td> Sort By: <input type = 'radio' name = 'byColumn' value='SenderEmail'><td> Sort By: <input type = 'radio' name = 'byColumn' value='Subject'><td> Sort By: <input type = 'radio' name = 'byColumn' value='Tech'><td> Sort By: <input type = 'radio' name = 'byColumn' value='Status'><td> <button type ='button' value='Submit' button class=\"myButton\" onclick=\"sort();\">Sort</button> </tr>"; 
    
          str += "</tbody></table></form>"; 
          console.log(str); 
          document.getElementById("table").innerHTML = str; 
         } 
        function sort(){ 
         var table = currentTable; 
         var sortby = document. getElementsByName("byColumn").value; //the error is on this line 
         alert(sortby); 
    
        } 
    

    enter image description here

    +0

    を取得するには、これはSQLの質問です。質問を再タグ付けしてクエリを追加すると便利です。 – Eugene

    +0

    私はフォームを提出するときにnull値を意味します。ソート関数の2行目にあります。 –

    +0

    更新:getElementsByName( "byColumn") 'を使用し、すべてをループして値を取得するようにチェックします これを見てくださいhttps://jsfiddle.net/MamdouhFreelancer/yrub1mac/1/ –

    答えて

    1

    name='byColumn'ではなく.getElementById("byColumn")のすべての入力を得るには、.getElementsByName("byColumn")を使用する必要があります。あなたの問題は、 `NULL`値についてのであれば、すべての無線のオーバーループが.checked.value

    var data = [{ 
     
    'TicketNum':'TicketNum', 
     
    'Recieved':'Recieved', 
     
    'SenderName':'SenderName', 
     
    'SenderEmail':'SenderEmail', 
     
    'Subject':'Subject', 
     
    'Tech':'Tech', 
     
    'Status':'Status' 
     
    },{ 
     
    'TicketNum':'TicketNum', 
     
    'Recieved':'Recieved', 
     
    'SenderName':'SenderName', 
     
    'SenderEmail':'SenderEmail', 
     
    'Subject':'Subject', 
     
    'Tech':'Tech', 
     
    'Status':'Status' 
     
    },{ 
     
    'TicketNum':'TicketNum', 
     
    'Recieved':'Recieved', 
     
    'SenderName':'SenderName', 
     
    'SenderEmail':'SenderEmail', 
     
    'Subject':'Subject', 
     
    'Tech':'Tech', 
     
    'Status':'Status' 
     
    }]; 
     
    createTable(data); 
     
        function createTable(data) { 
     
         var str = "<form id='tableSelect' action='javascript:void(0);'><table><thead><tr> <th>TicketNum</th><th>Recieved</th><th>SenderName</th><th>Sender Email</th><th>Subject</th><th>Tech</th><th>Status</th><th>Select</th></tr></thead><tbody>"; 
     
        
     
         for (var key in data) { 
     
         if (!data.hasOwnProperty(key)) continue; 
     
         var row = data[key]; 
     
         str += "<tr> <td>"; 
     
         str += row['TicketNum'] + "</td><td>"; 
     
         str += row['Recieved'] + "</td><td>"; 
     
         str += row['SenderName'] + "</td><td>"; 
     
         str += row['SenderEmail'] + "</td><td>"; 
     
         str += row['Subject'] + "</td><td>"; 
     
         str += row['Tech'] + "</td><td>"; 
     
         str += row['Status'] + "</td><td>"; 
     
         str += "<input type='radio' name ='selectRow' value=" + row['TicketNum'] + ">" + "</td></tr>"; 
     
         } 
     
         str += "<tr><td> Sort By: <input type = 'radio' name = 'byColumn' value='TicketNum'><td> Sort By: <input type = 'radio' name = 'byColumn' value='Recieved'><td> Sort By: <input type = 'radio' name = 'byColumn' value='SenderName'><td> Sort By: <input type = 'radio' name = 'byColumn' value='SenderEmail'><td> Sort By: <input type = 'radio' name = 'byColumn' value='Subject'><td> Sort By: <input type = 'radio' name = 'byColumn' value='Tech'><td> Sort By: <input type = 'radio' name = 'byColumn' value='Status'><td> <button type ='button' value='Submit' button class=\"myButton\" onclick=\"sort();\">Sort</button> </tr>"; 
     
        
     
         str += "</tbody></table></form>"; 
     
         //console.log(str); 
     
         document.getElementById("table").innerHTML = str; 
     
        } 
     
        
     
        function sort() { 
     
         //var table = currentTable; 
     
         var col = document.getElementsByName("byColumn"); //the error is on this line 
     
         var sortby; 
     
         for (var i = 0; i < col.length; i++) { 
     
         if (col[i].checked) { 
     
          sortby = col[i].value; 
     
          break; 
     
         } 
     
         } 
     
         alert("sort by: "+sortby); 
     
        
     
        }
    <div id='table'></div>

    0

    id = "byColumn"を "byColumn"という名前の入力に追加する必要があります。

    idはブラウザで使用され、その名前はサーバーによって使用されます。

    タグにIDを持たないため、document.getElementByIdはnullを返し、nullは属性valueを持ちません。

    +0

    私は実際にはgetElementsByName( "byColumn")を使用することを意図していましたが、この変更を行っても未定義の値は得られません –

    関連する問題