Как получить дату из внутреннего HTML / textContent javascript - PullRequest
0 голосов
/ 15 мая 2018

Вот код JavaScript, который я пытаюсь использовать для получения даты из элемента, заполненного несколькими элементами

. 9-й элемент содержит дату в формате YYYY-MM-DD. Когда я использую этот код, кажется, что он не преобразует элементы в дату JavaScript - вместо этого я получаю [нативный код], когда пытаюсь сбросить переменную даты. Есть идеи?

Неполный код:

if (optvalue == 2) { 
    for (i = 0; i < trans_array.length; i++) {
        var cn = trans_array[i].childNodes;
        var dts = cn[9];

        try {
            var transdt = new Date(dts.innerHTML);
            if (transdt < prior_month) {
                trans_array[i].classList.add("hide");
                alert("node hiddent!");
            }
            alert(transdt.getDay + " / " + transdt.getMonth + " / " + transdt.getFullYear);
        } catch(err) {
            alert("Error: Inner HTML is not a date:" + dts.innerHTML)       
        }    
    }    
alert("Value is 2");
}

<div class="transaction_item prior_day" id="trans-88">
<!----------- Sub Row 1 ------------------->
<p class="tiday">Tue</p>
<p class="tipayee">Coutry Boy Gas</p>
<p class="ticredit">&nbsp;</p>
<p class="tidebit">7.02</p>
<p class="tibalance">1.24</p>
<p class="solid_box" id="check-88" onclick="toggle_checkmark(88)">&nbsp;</p>
<p onclick="edit(1, 88)">Edit</p>
<!-------------- Sub Row 2 --------------------->
<p class="tidate">2018-04-17</p>
<p class="ticat">Miscellaneous Expense</p>
<p>&nbsp;</p>
<p>&nbsp;</p>
<p>&nbsp;</p>
<p>&nbsp;</p>
<p class="timemo">Gas for Car </p>
</div>

Ответы [ 3 ]

0 голосов
/ 15 мая 2018

Согласно моему пониманию, я сделал модификацию кода и создал скрипку.

Вот рабочая скрипка: https://jsfiddle.net/kh9pandv/

Модификации:

 var dts = cn[9]; 

для

 var dts = trans_array.querySelector('.tidate');

В режиме оповещения вы не вызывали функции, вы просто назвали функцию.

alert(transdt.getDay() + " / " + transdt.getMonth() + " / " + transdt.getFullYear());
0 голосов
/ 15 мая 2018

Я полагаю, что проблема в том, что вы обращаетесь к свойству "getDay" вместо вызова функции "getDay ()"

Попробуйте изменить вашу строку

alert(transdt.getDay + " / " + transdt.getMonth + " / " + transdt.getFullYear);

на

alert(transdt.getDay() + " / " + transdt.getMonth() + " / " + transdt.getFullYear());
0 голосов
/ 15 мая 2018

Если я правильно понял, вы хотите получить строковую дату и преобразовать ее в date(), верно?Если да, почему бы не получить значение непосредственно из элемента с классом .tidate, а затем создать new date()?

Это вернет полную дату с указанием дня, месяца, года и времени, чтобы получить именно то, что вам нужно, вы можете использовать методы get из date(), например:
getDate(): Возвращает день месяца (1-31)
getFullYear(): возвращает год (4-значные годы)
getMonth(): возвращает месяц (0-11)

Базовый пример:

var date_string = document.querySelector('.tidate').textContent;
var nDate = new Date(date_string);
console.log("Complete Date: " + nDate);
console.log("Day:" + nDate.getDate());
console.log("Month:" + nDate.getMonth()); //ADD +1 to get "real life" month 
console.log("Year:" + nDate.getFullYear());
<!----------- Sub Row 1 ------------------->
<p class="tiday">Tue</p>
<p class="tipayee">Coutry Boy Gas</p>
<p class="ticredit">&nbsp;</p>
<p class="tidebit">7.02</p>
<p class="tibalance">1.24</p>
<p class="solid_box" id="check-88" onclick="toggle_checkmark(88)">&nbsp;</p>
<p onclick="edit(1, 88)">Edit</p>
<!-------------- Sub Row 2 --------------------->
<p class="tidate">2018-04-17</p>

Если я неправильно понял, пожалуйста, уточните мне, что именно вам нужно, или напишите код, который мы можем воспроизвести в фрагменте кода.

...