JavaScript音量增大和减小按钮

时间:2015-12-22 07:07:18

标签: javascript

所以我有音量增大和减小按钮,每次增加音量时都会显示通知。

提高音量

  function volumeUp() {
    if (currentVolume < .9) {
      currentVolume += .1;
      sound.volume = currentVolume;
      var $toastContent = $('<span>Volume '+ parseInt(currentVolume * 100)+ ' %' + '</span>' );
      Materialize.toast($toastContent, 2000);
    } else {
      alert("Max Vol")
    }
  }

降低音量

  function volumeDown() {
    if (currentVolume > .1) {
      currentVolume -= .1;
      sound.volume = currentVolume;
      var $toastContent = $('<span>Volume '+ parseInt(currentVolume * 100)+ ' %' + '</span>' );
      Materialize.toast($toastContent, 2000);
    } else {
      alert("Min Vol")
    }
  }

我遇到的问题是,当我到达&lt; 80%它开始提醒89然后99而不是90和100.

当我达到10%并且减少它时,它显示为2%而不是0%。

有什么想法吗?

谢谢!

2 个答案:

答案 0 :(得分:3)

正如阿米特提到的那样,关于浮点数学。 如果您打开控制台并声明变量并使用0.7 + 0.1初始化它,您将看到它的实际值将为0.7999999999999999

对于您的媒体播放器,它不会有所作为,所以它只是显示此值。您有两种选择:

1)使用整数:

function volumeUp() {
  if (currentVolume < 90) {
    currentVolume = currentVolume + 10;
    sound.volume = currentVolume / 100;
    var $toastContent = $('<span>Volume '+ currentVolume+ ' %' + '</span>' );
    Materialize.toast($toastContent, 2000);
  } else {
    alert("Max Vol")
  }
}

2)每次添加后应用四舍五入:

currentVolume = Math.round((currentVolume + 0.1) * 10) / 10;

currentVolume = (parseFloat(currentVolume) + 0.1).toFixed(1); //string representation with one decimal

答案 1 :(得分:1)

首先,以下行没有意义。

currentVolume = currentVolume += .1;

currentVolume = currentVolume + .1;currentVolume += .1;

.9之后.1之后,如果您想要1而不是10增加或减少,那么您应该

currentVolume += .01; // Instead of .1 in your volumeUp() function

currentVolume -= .01; // Instead of .1 in your volumeDown() function