繁体   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