簡體   English   中英

瞬間JS數組無效日期

[英]Moment JS Array Invalid Date

我只是想要第二列中的時間,然后增加2個小時。 我正在使用momentJS庫。 到目前為止,這就是我所擁有的。

 function myFunction(){ var cellData = []; var i; var myTable = document.getElementById("myTable"); for (i=0; i<myTable.rows.length; i++) { cellData.push(myTable.rows[i].cells[1].innerHTML); } var x = [moment(cellData).add(2, 'h').format('MM/DD/YYYY hh:mm')]; alert(x); } 
 <table id="myTable" border="1"> <tbody> <tr> <td>A<td> <td>2016-08-24 15:45</td> <td>C</td> </tr> <tr> <td>A<td> <td>2016-08-24 16:45</td> <td>C</td> </tr> </tbody> 

拋出錯誤是因為您嘗試訪問包括表頭行在內的所有行

您可能考慮僅遍歷tbody的行,請檢查以下代碼段

 window.onload=function(){ myFunction(); } function myFunction(){ var cellData = []; var i; var myTable = document.getElementById("myTable"); var cellData=[]; $("#myTable tbody tr").each(function(){ var date=$(this).find('td').eq(2).html(); var dateModified=moment(date).add(2, 'h').format('MM/DD/YYYY hh:mm A') cellData.push(dateModified); }); console.log(cellData); } 
 <script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.1.1/jquery.min.js"></script> <script src="https://cdnjs.cloudflare.com/ajax/libs/moment.js/2.15.1/moment.min.js"></script> <table id="myTable" border="1"> <tbody> <tr> <td>A<td> <td>2016-08-24 15:45</td> <td>C</td> </tr> <tr> <td>A<td> <td>2016-08-24 16:45</td> <td>C</td> </tr> </tbody> 

希望這有助於檢查此鏈接http://codepen.io/sahithiK/pen/LRJGaJ另一件事,您不能一次添加整個數組。 您可以考慮一次添加每個項目,然后插入數組

您尚未正確關閉<td>標記,這就是為什么myTable.rows[i].cells[1].innerHTML不返回日期字符串的原因。

嘗試這個

 <script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> 

 function myFunction() { var cellData = []; var i; var x = []; var myTable = document.getElementById("myTable"); for (i = 0; i < myTable.rows.length; i++) { cellData.push(myTable.rows[i].cells[1].innerHTML); date = moment(cellData[i], "YYYY-MM-DD HH:mm").add(2, 'h').format('MM/DD/YYYY hh:mm'); x.push(date); } console.log(x); } 
 <script src="https://cdnjs.cloudflare.com/ajax/libs/moment.js/2.13.0/moment.min.js"></script> <table id="myTable" border="1"> <tbody> <tr> <td>A</td> <td>2016-08-24 15:45</td> <td>C</td> </tr> <tr> <td>A</td> <td>2016-08-24 16:45</td> <td>C</td> </tr> </tbody> </table> <button type="button" onclick="myFunction()">Click me</button> 

嘗試這樣做:

function myFunction(){

    var x = [];  
    var myTable = document.getElementById("myTable");

    for (var i=0; i<myTable.rows.length; i++) {  
         x.push(moment(myTable.rows[i].cells[1].innerHTML).add(2, 'h').format('MM/DD/YYYY hh:mm')); 
    }
    alert(x);
}

希望這可以幫助

您有一系列問題。

的HTML

您尚未關閉行的前<td>標記。

    <td>A</td>
    <!--  ^ -->
    <td>2016-08-24 15:45</td>
    <td>C</td>

的JavaScript

cellData是一個數組,您不能將日期字符串數組傳遞給momentJS。 相反,創建momentJS實例並將其格式化后的字符串推送到cellData

 function myFunction(){ var cellData = []; var i; var myTable = document.getElementById("myTable"); for (i=0; i<myTable.rows.length; i++) { var momentObj = moment(myTable.rows[i].cells[1].innerHTML).add(2, 'h').format('MM/DD/YYYY hh:mm'); cellData.push(momentObj); } console.log(cellData); // ["08/24/2016 05:45", "08/24/2016 06:45"] } myFunction(); 
 <script src="https://cdnjs.cloudflare.com/ajax/libs/moment.js/2.15.1/moment.min.js"></script> <table id="myTable" border="1"> <tbody> <tr> <td>A</td> <td>2016-08-24 15:45</td> <td>C</td> </tr> <tr> <td>A</td> <td>2016-08-24 16:45</td> <td>C</td> </tr> </tbody> </table> 

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM