【问题标题】:how to reload specific div如何重新加载特定的div
【发布时间】:2022-01-04 08:12:00
【问题描述】:

我的container div 中有countdown,但是当我尝试重新加载特定的container 时,它的重新加载完美但我的countdown 没有出现,而且按钮也被禁用..

function refreshDiv() {
  $('.container').load(window.location.href + " .container >*");
}

javascript

var spn = document.getElementById("count");
var btn = document.getElementById("btnCounter");

var count = 2; // Set count
var timer = null; // For referencing the timer

(function countDown() {
  // Display counter and start counting down
  spn.textContent = count;

  // Run the function again every second if the count is not zero
  if (count !== 0) {
    timer = setTimeout(countDown, 1000);
    count--; // decrease the timer
  } else {
    // Enable the button
    btn.removeAttribute("disabled");
  }
}());

这是html

<div class="container">

    <h2>choose product </h2>
    <input type="file" name="inpFile" id="inpFile">

    <div class="image-preview" id="imagePreview">
      <img src="" alt="Image Preview" id="zoom" class="image- 
           preview__image">
      <span class="image-preview__default-text">choose image</span>

    </div>
  </div>

  <div class="container2">
    <h4 id="title">here</h4>
    <div class="controls">
      <div class="main-controls">
        <div class="dropdown">
          <button class="btn btn-primary dropdown-toggle" data-bs-toggle="dropdown" id="btnCounter" disabled>File <span id="count"></span></button>
          <div class="dropdown-menu">
            <button id="txt-btn" class="dropdown-item" onclick="refreshDiv();">Save</button>

【问题讨论】:

  • @Andreas 我是新来的
  • 如果您没有收到任何答案,那么原因很可能是您没有包含足够的有关问题的信息或没有提供可重复的示例。
  • @Andreas 我更新了标题请帮助解决我的问题
  • .load() 调用会覆盖#container3 的内容,这会杀死您使用.getElementById() 获得的按钮。将.getElementById() 调用移动到countDown() 函数中
  • @Andreas 先生我做了,但同样的问题显示

标签: javascript html jquery ajax


【解决方案1】:

那里发生了很多没有多大意义的事情。不过,其中大部分是错误的术语而不是错误的代码。

您的 countDown 函数做了 3 件事(这很好),

  • 它将计数器增加到下一个值,
  • 更新计数器显示,并
  • 它会自行重启(超时后)

(再次,很好);但是它在中执行这些操作的顺序非常奇怪:在修改显示显示的值之前,您更新了视觉显示。换句话说,您的显示不准确。


“也许控制台工作正常。”不知道这意味着什么,甚至与它有什么关系。


refreshDiv() & "..当我刷新整个页面但是当我刷新#container3.."

你不刷新 &lt;div&gt;s,你更新它们。 您对该概念使用错误的语言这一事实​​导致 你认为完全不相关的东西(刷新浏览器)在某种程度上相似或相关。


&lt;div class="container2" id="container3"&gt; 忍不住想知道 #container3.container2 类背后的逻辑是什么;但在继承该代码的人必须支付他的精神科医生的费用之前,它不会真正引起问题。


最简单的解决方法可能是这样的:

var spn = document.getElementById("count");
var btn = document.getElementById("btnCounter");

var count = 3; // Set counter (+ add 1 second)
var timer = null; // For referencing the timer

(function countDown() {
    // decrease the counter (but never below zero)
    count = ( --count > 0 ? count : 0 );

    if (count > 0) {
        // Run the function again every second if the count is not zero
        timer = setTimeout(countDown, 1000);
    } else {
        // Enable the button
        btn.removeAttribute("disabled");
    }

    // Display counter
    spn.textContent = count;
}());

【讨论】:

  • 先生,谢谢您的重播,但仍然显示同样的问题
  • 您必须更清楚这意味着什么。您希望/期望发生什么,以及正在发生什么?
  • 查看当我刷新整个页面时,当我只刷新特定的 div 时,我的倒计时计时器可以正常工作,我的倒计时没有出现并且按钮被禁用@Raxi
  • 你没有刷新&lt;div&gt;。您再次对同一 uri 的内容发出 ajax 请求,然后让 Jquery 处理该 html 结果并将其中的一部分注入您的container3
  • 好的先生,但你能解决这个问题吗?我已经尝试了 2 天@Raxi
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-07-07
  • 1970-01-01
相关资源
最近更新 更多