【发布时间】:2021-11-16 21:51:00
【问题描述】:
我是 JS 新手。
我有两张像下面这样的卡片,
<div class = "card" id ="c1">
<div class = "content"> </div>
</div>
<div class = "card" id ="c2">
<div class = "content"> </div>
</div>
卡片 1 中的 div content 应该像 Date.now() 一样显示动态值,而卡片 2 中的 content 应该显示静态值。
JS:
function cardData(card) {
myCard(card);
}
function allCardData() {
var cards = document.getElementsByClassName("card");
Array.prototype.forEach.call(cards, (card) => {
cardData(card);
});
}
function mockData(card) {
var setInt;
function caseOne(card, callBackOne) {
callBackOne(card);
}
function caseTwo(card, callBackTwo) {
callBackTwo(card);
}
// SetInterval function
function callBackOne(card) {
setInt = setInterval(function () {
var currentDate = Date.now();
var val = String(currentDate).substr(8, 2);
}, 1000);
}
//clearInterval
function callBackTwo(card) {
clearInterval(setInt);
}
switch(card)
{
case "c1":
return {
target: card,
value: caseOne(card, callBackOne)
}
case "c2":
return {
target: card,
value: caseTwo(card, callBackTwo)
}
}
}
function Callback(value, callback) {
callback(value);
}
function myCard(card) {
Callback(mockData(card), function (data) {
console.log(data);
var target = document.getElementById(data.target);
var content = target.getElementsByClassName('content')[0];
content.innerHTML = data.value;
});
}
//Onload function
window.onload = function () {
allCardData();
};
我需要 card1 中的每 2 秒动态数据和 card2 中的 static data Which clears the dynamic value。
但是,它不起作用。
因为,回调函数需要return,当我将函数mockData传递给回调时。它没有按预期工作。
有人可以帮我to start the dynamic data in card1 and clear the data in card2.?
非常感谢。
【问题讨论】:
-
你试过调试吗?您可以随时使用断点停止执行代码,只需查看变量值即可。或者将
console.log(card)放入mockData()或caseOne()和caseTwo()中,这样您就可以看到一切是否按照您的预期执行。 -
@Peter Krebs。是的,我尝试调试。 console.log(data) 为案例 1 提供静态值 3,对于案例 2,该值未定义。
-
那么
console.log(card)呢?到处都是正确的吗?clearInterval(setInt)返回值未定义,无需将其保存在变量中。见clearInterval docs -
console.log(data) in mockData() 提供卡 ID“c1”和“c2”。
-
从 clearInterval 中删除了
return。但是,它没有用。请你帮助我好吗? @PeterKrebs
标签: javascript html