【问题标题】:check if innerhtml changed检查innerhtml是否改变
【发布时间】:2016-03-11 23:45:15
【问题描述】:

我正在为自己编写一个打卡程序,并想检查我是否打卡。我想看看原始 html 是否发生了变化,因为我认为这比使用全局布尔变量更好。

我的 HTML 代码:

<h1 id="startTime">Start Time: </h1>
<h1 id="endTime">End Time: </h1>
<h1 id="totalHours">Total Hours: </h1>
<br>
<button class="button button1" onclick="hoursCalc()">clock in</button>

我的 JS 代码:

function hoursCalc() {
    var d = new Date();
    var h = d.getHours();
    if (document.getelementByID === "Start Time: ")
        document.getElementById("startTime").innerHTML += h;
    else 
        document.getElementById("endTime").innerHTML += h;
};

我遇到问题的地方是使用 if 语句。由于这是正在显示的确切文本,因此我希望它将 h 附加到它上面。相反,它会跳到 else 语句并将其附加到结束时间。

【问题讨论】:

  • 您没有将任何参数传递给 if 守卫内的 document.getElementById。我觉得你想做 if (document.getElementById('startTime').innerHTML === "Start Time: ") { ...}

标签: javascript html date datetime time


【解决方案1】:

试试:

if (document.getElementById('startTime').innerHTML === "Start Time: ")

【讨论】:

  • 谢谢,应该明白了。
【解决方案2】:

你的目标可能是这样的:

function formatDate(date) {
    return [
       ("0" + date.getHours()).slice(-2),
       ("0" + (date.getMinutes())).slice(-2),
       ("0" + (date.getSeconds())).slice(-2)
    ].join(':');
}

var startTime;
document.getElementById("myBtn").addEventListener("click", function() {
    var d = new Date();
    if (typeof startTime === "undefined") {
        startTime = d;
        document.getElementById("startTime").innerHTML = formatDate(d);
        document.getElementById("endTime").innerHTML = '';
        document.getElementById("totalSeconds").innerHTML = '';
    } else {
        document.getElementById("endTime").innerHTML = formatDate(d);
        document.getElementById("totalSeconds").innerHTML = (d - startTime) / 1000;
        startTime = undefined;
    }
});
<h2>Start Time: <span id="startTime"></span></h2>
<h2>End Time: <span id="endTime"></span></h2>
<h2>Total Seconds: <span id="totalSeconds"></span></h2>
<button class="button button1" id="myBtn">clock in</button>

(另见this Fiddle


注意

对于我的演示,我计算了开始和结束时间之间的秒数,而不是小时数,因为这在演示的上下文中更有意义。

如果您想要总数而不是总秒数,只需将秒数除以 3600。

【讨论】:

    猜你喜欢
    • 2021-10-14
    • 2016-08-22
    • 1970-01-01
    • 2011-05-20
    • 2014-06-15
    • 2020-04-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多