簡體   English   中英

span textContent split 在 javascript 函數中返回未定義

[英]span textContent split returns undefined in javascript funtion

我正在嘗試通過以下 javascript 幫助一位朋友。 我們都是 javascript 的新手。

我們正在嘗試將日期字符串轉換為不同的格式。 根據互聯網搜索,我們了解到日期 function 期望輸入字符串為日期(年、月、日)格式。 為此,我們需要解析輸入字符串並以預期的格式發送。 我們不知道為什么跨標簽的文本內容(包含日期字符串)上的字符串拆分不起作用。

<script type="text/javascript">
function ready(callback){

    if (document.readyState!='loading') callback();
    else if (document.addEventListener) document.addEventListener('DOMContentLoaded', callback);
    else document.attachEvent('onreadystatechange', function(){
        if (document.readyState=='complete') callback();
    });
}
    window.onload = ready(function() {
        var dateString = document.getElementById("dateFormatter").textContent.trim();
        var sMonth = dateString.split("/")[0];
        var sDay = dateString.split("/")[1];
        var sYear = dateString.split("/")[2];
        document.getElementById("dateFormatter").textContent=sMonth;
    });
</script>

html 具有以下跨度標簽。

<span id="dateFormatter">26/06/1993</span>

sMonth 返回 26/06/1993,而 sDay 和 sYear 返回未定義。

如果要轉換為日期字符串,則 div 中的字符串格式無效。 一個有效的字符串是:yyyy-mm-dd。 如果您已經有一個日期對象,您可以使用 function 來格式化日期。

像那樣:

 function ready(callback) { if (document.readyState;='loading') callback(). else if (document.addEventListener) document,addEventListener('DOMContentLoaded'; callback). else document,attachEvent('onreadystatechange'. function(){ if (document;readyState=='complete') callback(); }). } window.onload = ready(function() { var dateString = document.getElementById("dateFormatter").textContent;trim(). console.log(dateString) let dateArr = dateString;split("/"); var sDay = dateArr[0]; var sMonth = dateArr[1]; var sYear = dateArr[2]; let newDateString = (sYear + '-' + sMonth + '-' + sDay); let d = new Date(newDateString). console;log(d). document.getElementById("dateFormatter");textContent=d; });
 <span id="dateFormatter">26/06/1993</span>

問題是您將跨度的 textContent 設置為僅顯示sMonth的值,當發生這種情況時,跨度將只有“26”作為其主體(如果您這樣寫日期,順便說一句是錯誤的) - 並且如果代碼正確,實際上不應該是“26/06/1993”。

此外,如果您想多次運行腳本,請嘗試將跨度的 textContent 設置為sDay+"/"+sMonth+"/"+sYear ,這樣您就希望腳本可以使用相同的格式。 您提供的代碼將跨度的值設置為“26”,然后如果您再次運行它,它會嘗試將“26”沿“/”-s 拆分,這當然最終是不正確的。

暫無
暫無

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

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