[英]Putting JavaScript data inside an HTML table cell
我正在构建一个弹出框,每次有人触发它(有延迟)时,都会显示一个计数器,该计数器显示单击次数和单击日期!
我该如何获取时间和点击以显示在单元格表中,如下所示:
Clicks Time 1 thusday 4 2018 2 monday 3 2018
这是我的HTML代码:
function Msg1() { document.getElementById('myText').innerHTML = 'Hey <strong>Thanks!</strong>'; } var counter1 = 1; var popup = document.getElementById("popup"); var input = document.getElementById("popup-delay"); var showButton = document.getElementById("popup-show"); var closeButton = document.getElementById("popup-close"); showButton.addEventListener("click", function onShowClick() { // Get the user input and convert it into a number var value = parseInt(input.value, 10); // If the input is not a number if (isNaN(value)) { // Warn the user alert("NaN (Not A Number) !"); } // Otherwise else { // Convert milliseconds to seconds var delay = value * 1000; // Turn off the click listener on the "Show" button showButton.removeEventListener("click", onShowClick); // Start the countdown to show the popup document.getElementById("num1").innerHTML = counter1; counter1 = counter1 + 1; document.getElementById("num4").innerHTML += "<span>" + Date() + "</span>"; setTimeout(function() { // Show the popup popup.style.display = "block"; // Turn on the click listener on the "Close" button closeButton.addEventListener("click", function onCloseClick() { // Turn off the click listener on the "Close" button closeButton.removeEventListener("click", onCloseClick); // Turn on the click listener on the "Show" button showButton.addEventListener("click", onShowClick); // Hide the popup popup.style.display = "none"; }); }, delay); } });
#popup { display: none; position: absolute; top: 0; right: 0; bottom: 0; left: 0; background: yellow; padding: 1em; } #thecounter { float: right; background-color: rebeccapurple; padding-top: 50px; padding-bottom: 50px; width: 10%; margin-right: 10px; font-size: 30px; color: white; text-align: center; } #thetime { float: right; background-color: rosybrown; padding-top: 50px; padding-bottom: 50px; width: 10%; font-size: 30px; color: white; text-align: center; } #num4 span { font-size: 20px; display: block; margin-bottom: 4px; padding: 4px; }
Delay: <input type="text" id="popup-delay" /> <button type="button" id="popup-show">Show</button> <div id="popup"> <p>I am a popup :-)</p> <button type="button" id="popup-close">Close</button> </div> <div id="container"> <div id="thecounter"> <p id="num2">clicks </p> <p id="num1">0 </p> </div> <div id="thetime"> <p id="num3">time </p> <p id="num4"> </p> </div> </div>
问题是您在渲染dom之前通过id获取元素,因此它总是获取null值,只需将按钮的事件侦听器更改为以下函数即可
function onShowClick () {
var popup = document.getElementById("popup");
var input = document.getElementById("popup-delay");
var showButton = document.getElementById("popup-show");
var closeButton = document.getElementById("popup-close");
// get the user input and convert it into a number
var value = parseInt(input.value, 10);
// if the input is not a number
if (isNaN(value)) {
// warn the user
alert("NaN (Not A Number) !");
}
// otherwise
else {
// convert milliseconds to seconds
var delay = value * 1000;
// turn off the click listener on the "Show" button
showButton.removeEventListener("click", onShowClick);
// start the countdown to show the popup
// document.getElementById("num1").innerHTML= counter1;
counter1= counter1+1;
let currDate = Date();
// document.getElementById("num4").innerHTML += "<span>" + currDate + "</span>";
// add new Row
let table = document.getElementById("table");
var tr = document.createElement('tr');
var tdCounter = document.createElement('td');
tdCounter.appendChild(document.createTextNode(counter1))
tr.appendChild(tdCounter)
var tdTime = document.createElement('td');
tdTime.appendChild(document.createTextNode(currDate))
tr.appendChild(tdTime)
table.appendChild(tr)
setTimeout(function () {
// show the popup
popup.style.display = "block";
// turn on the click listener on the "Close" button
closeButton.addEventListener("click", function onCloseClick () {
// turn off the click listener on the "Close" button
closeButton.removeEventListener("click", onCloseClick);
// turn on the click listener on the "Show" button
showButton.addEventListener("click", onShowClick);
// hide the popup
popup.style.display = "none";
});
}, delay);
}
}
然后在html中的onclick上调用它,如下所示
<body>
Delay: <input type="text" id="popup-delay" />
<button type="button" onclick="onShowClick()" id="popup-show">Show</button>
<div id="popup">
<p>I am a popup :-)</p>
<button type="button" id="popup-close">Close</button>
</div>
<div id="container">
<table id="table">
</table>
</div>
</body>
像下面这样的输出
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.