You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何将id为demo的倒计时内容写入HTML的data-title属性?

解决倒计时内容同步到Tooltip的data-title问题

我明白你的需求了——你想把原本要显示在demo元素里的倒计时动态内容,放到那个带ya-content类的图标元素的data-title属性中,用来作为tooltip的提示内容对吧?之前尝试用data-title-id="demo"的方式没效果,是因为没有内置的机制帮你自动同步这个内容,得手动用JavaScript来实现,下面是具体的解决步骤:

1. 调整你的HTML结构

首先,先把HTML里多余的<td>标签去掉(在<li>里放表格单元格不太合适),然后给目标图标元素加一个方便选择的ID,比如countdown-tooltip:

<li class="nav-item">
  <a class="nav-link">
    <span class="d-none d-md-inline-block">global Time : 
      <i id="countdown-tooltip" class="ya ya-content" data-toggle="tooltip" data-placement="bottom" data-title=""></i>
    </span>
  </a>
</li>

2. 修改倒计时的JavaScript逻辑

原来的代码是把倒计时内容写入demo元素的innerHTML,现在我们要改成更新目标元素的data-title属性。另外,如果你的tooltip是用Bootstrap的Tooltip组件,修改data-title后还需要刷新tooltip,否则提示内容不会更新。

修改后的JavaScript代码如下:

<script>
var currentDate = new Date(new Date().getTime() + 24 * 60 * 60 * 1000);
var day = currentDate.getDate();
var month = currentDate.getMonth();
var year = currentDate.getFullYear();

// 设置倒计时目标时间
var countDownDate = new Date(year, month, day, 12).getTime();

// 获取tooltip元素
var tooltipEl = document.getElementById('countdown-tooltip');

// 初始化Bootstrap Tooltip(如果用了的话)
if (tooltipEl) {
  $(tooltipEl).tooltip();
}

// 每秒更新倒计时
var x = setInterval(function() {
  var now = new Date().getTime();
  var distance = countDownDate - now;

  // 计算时分秒
  var hours = Math.floor((distance % (1000 * 60 * 60 * 24)) / (1000 * 60 * 60));
  var minutes = Math.floor((distance % (1000 * 60 * 60)) / (1000 * 60));
  var seconds = Math.floor((distance % (1000 * 60)) / 1000);

  var countdownText = hours + " : " + minutes + " : " + seconds;

  // 更新data-title属性
  if (tooltipEl) {
    tooltipEl.setAttribute('data-title', countdownText);
    // 如果用了Bootstrap Tooltip,刷新提示内容
    $(tooltipEl).tooltip('dispose').tooltip();
  }

  // 倒计时结束后的处理
  if (distance < 0) {
    clearInterval(x);
    if (tooltipEl) {
      tooltipEl.setAttribute('data-title', "EXPIRED");
      $(tooltipEl).tooltip('dispose').tooltip();
    }
  }
}, 1000);
</script>

3. 保留原有的CSS和依赖

你的CSS样式和jQuery依赖可以继续保留:

.navbar-dark .navbar-nav .nav-link { color: rgba(255, 255, 255, .8); }
@media (min-width: 992px) {
  .navbar-expand-lg .navbar-nav .nav-link { padding-right: 10px; padding-left: 10px; }
}
@media (min-width: 768px) {
  .d-md-inline-block { display: inline-block!important; }
}
.ya { display: inline-block; font-weight: 400; font-style: normal; line-height: 1; font-family: nucleo; speak: none; -webkit-font-smoothing: antialiased; -moz-osx-font-smoothing: grayscale; }
.ya-content::before { content: "\E015"; }
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<!-- 如果用Bootstrap Tooltip,记得引入Bootstrap的JS和CSS -->

为什么data-title-id="demo"没用?

因为无论是原生HTML还是常见的前端框架(比如Bootstrap),都没有内置这个属性来自动同步另一个元素的内容到data-title里。这种动态内容的同步,必须通过JavaScript手动监听内容变化或者直接在更新逻辑里同时修改目标属性。

内容的提问来源于stack exchange,提问作者Kimo Atomix

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.12 04:18:17