【问题标题】:Automatically animate a slider with a button使用按钮自动为滑块设置动画
【发布时间】:2023-03-12 03:35:02
【问题描述】:

我有一个可以自动更改图像的滑块(我在 stackoverflow 上找到的):

<input id="valR" type="range" min="1" max="48" value="0" step="1" oninput="showVal(this.value)" onchange="showVal(this.value)" />
    <span id="range">0</span>
    <img id="img">

<script>

    var val = document.getElementById("valR").value;
        document.getElementById("range").innerHTML=val;
        document.getElementById("img").src ="Precipitation/06z/HRDPS-Precipitation_Surface.06z.f001.jpg";
        function showVal(newVal){
          document.getElementById("range").innerHTML=newVal;
            if(newVal >= 1 && newVal < 2)
            document.getElementById("img").src = "Precipitation/06z/HRDPS-Precipitation_Surface.06z.f001.jpg";
            else if(newVal >= 2 && newVal < 3)
            document.getElementById("img").src = "Precipitation/06z/HRDPS-Precipitation_Surface.06z.f002.jpg";
<!--etc-->
}
</script>

但我想要一个“动画”切换按钮,单击时可以自动移动滑块(从而更改图像)

非常感谢您的帮助:)

【问题讨论】:

    标签: javascript html input slider jquery-animate


    【解决方案1】:

    更新

    只需添加带有 onclick 事件的按钮并操作对象。

    let val = document.getElementById("valR").value;
    document.getElementById("range").innerHTML = val;
    document.getElementById("img").src = "https://image.flaticon.com/icons/png/128/879/879761.png";
    
    function showVal(newVal){
      document.getElementById("range").innerHTML=newVal;
      if(newVal <= 10) document.getElementById("img").src = "https://image.flaticon.com/icons/png/128/879/879761.png";
      else if(newVal <= 20) document.getElementById("img").src = "https://image.flaticon.com/icons/png/128/3712/3712363.png";
      else document.getElementById("img").src = "https://image.flaticon.com/icons/png/128/744/744922.png";
     // Note that I change the if condition, so you could see the difference of the image between some ranged value
    }
    
    document.getElementById("inc").onclick = function(){
        val = parseInt(document.getElementById("range").innerHTML) + 1;
        (val > 48) ? val = 48 : val
        document.getElementById("range").innerHTML=val;
        document.getElementById("valR").value = val;
        showVal(val);
    };
    
    document.getElementById("dec").onclick = function(){
        val = parseInt(document.getElementById("range").innerHTML) - 1;
        (val < 0) ? val = 0 : val
        document.getElementById("range").innerHTML=val;
        document.getElementById("valR").value = val;
        showVal(val);
    };
    button{
      margin-top:15px;
      display:block;
    }
    <input id="valR" type="range" min="1" max="48" value="0" step="1" oninput="showVal(this.value)" onchange="showVal(this.value)" />
    <span id="range">0</span>
    <img id="img">
    <button id="inc">Increment</button>
    <button id="dec">Decrement</button>

    【讨论】:

    • 数字在变化,但图像和滑块状态都没有变化。同样,它也有点小故障:如果我滑动滑块让说 5 并单击增量,它会变为 -1(它不应该)并且限制没有上限为 48。无论哪种方式,谢谢你的时间:)
    • 你好@TechEdd_YT 我已经更新了答案,请原谅我的“小故障”,我希望这正是你想要的方式。如果您单击正确答案和赞成票,我将不胜感激。谢谢!
    • 嗨!谢谢你的更新!还有一个小故障:如果您理解我的意思,“灰色圆圈的东西”不会随着按钮移动。谢谢你的时间:)
    • 是的,我不明白你的意思,按钮是否需要与滑块一起移动?
    • 抱歉,我的评论不清楚。当我单击增量(例如)时,灰色圆圈不会向右移动。它停留在同一个地方。当我点击 Dec 时,值变为 -1... 等等。 Ty
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-03-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多