进度条,最大值和重置率100%

时间:2017-11-28 13:47:47

标签: javascript php html css sql

我在sql中使用连接到XP和MAX XP的进度条。每按一次按钮,你得到1 xp,最大xp是10.我希望当用户达到100%XP时,它应该重置为0%。如果您对如何使用“重置”增加此值的值有所了解,则用户的级别应该在100%重置时具有当前级别+ 1。

我通过以下代码每次点击插入1 xp:

$sql = "UPDATE progression SET xp=(xp + 1) WHERE username='$username' LIMIT 1";

我通过从此代码中将1 xp = 10%的条形图创建100%xp条形值:

$percent = intval($resultprogression[0]['xp']*100/$resultprogression[0]['max xp']);

我用这段代码在html / css中输出:

<div class="experience-bar-container">
        <div id="value" style="width:<?php echo $percent ?>%;"></div>
        <h3>XP: <span><?php echo $percent ?>%</span></h3>
</div>


div#value {
   display: block;
   position: absolute;
   z-index: 2;
   height: 19%;
   background: red;
   left: 0;
 }

1 个答案:

答案 0 :(得分:0)

你必须使用js。 解决方案:将数据属性添加到进度div以存储进度值:

<div class="experience-bar-container">
  <div id="value" data-value="<?php echo $percent ?>" style="width:<?php echo $percent ?>%;"></div>
  <h3>XP: <span id="xpPercent"><?php echo $percent ?>%</span></h3>
  <button class="xpButton" id="minus">-</button>
  <button class="xpButton" id="plus">+</button>
</div>

然后在按钮上添加使用data-attribute值更新条宽度的侦听器:

var progress = document.getElementById("value");
var xpPercent = document.getElementById("xpPercent");

document.getElementById("minus").addEventListener("click", function() {
  var newValue = parseInt(progress.getAttribute('data-value')) - 10;
  update(newValue);
});
document.getElementById("plus").addEventListener("click", function() {
  var newValue = parseInt(progress.getAttribute('data-value')) + 10;
  update(newValue);
});

“更新”功能检查进度,并在需要时调用重置函数调用dbupdate函数

function update(newValue) {
  progress.style.width = newValue + '%';
  progress.setAttribute('data-value', newValue);
  xpPercent.innerText = newValue + '%';
  if (newValue === 100) {
    reset();
  }
}:

function reset() {
  progress.style.width = '0%';
  progress.setAttribute('data-value', 0);
  xpPercent.innerText = '0%';
  dbUpdate();
}

function dbUpdate() {
  // do Ajax stuff to update user's level
}

https://jsfiddle.net/qpg7t603/1/

如果您不打算支持IE10,请查看进度标记:https://developer.mozilla.org/en-US/docs/Web/HTML/Element/Progress