如何从innerHTML / textContent javascript获取日期

时间:2018-05-15 11:29:08

标签: javascript date innerhtml

以下是我尝试使用的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 :(得分:1)

如果我理解正确,您希望获得字符串日期并转换为date(),对吧?如果是,为什么不直接从具有类.tidate的元素获取值,然后创建new date()

这将返回包含日,月,年和时间的完整日期,以获得您需要的内容,您可以使用date()中的get方法,例如:
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>

如果我理解错误,请向我说明您的需求到底是什么,或者发布我们可以在代码段中重现问题的代码。

答案 1 :(得分:0)

根据我的理解,我已经修改了代码并创建了一个小提琴。

以下是工作小提琴:https://jsfiddle.net/kh9pandv/

修改:

 var dts = cn[9]; 

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

在警报中,您没有调用函数,只是将函数命名为。

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

答案 2 :(得分:0)

我认为问题在于您正在访问该物业&#34; getDay&#34;而不是调用函数&#34; getDay()&#34;

尝试更改行

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

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