繁体   English   中英

如何一起使用onmousedown和onchange

[英]how to use onmousedown and onchange together

我有一个div和三个滑动条,即输入type = range。 相应地拖动滑杆时,div的背景色将更改。 我已经使用'onchange'事件来调用带有2个参数this.value和一个数字的函数; 设置div的背景色三个滑动条代表范围为0-255的'rgb'值。 到目前为止,这是可行的。

但是我不希望它现在起作用的方式。 拖动滑块时,颜色不会改变,而是在发生“ onmouseup”操作时改变。 我希望在拖动滑块时改变颜色。 这是我的代码:

<html>
            <head>
                <script>
                var r=0;
                var g=0;
                var b=0;
                    function set(){
                        r=g=b=128;
                        document.getElementById('div').style.backgroundColor="rgb("+r+","+g+","+b+")";
                    }
                    function change(val,bar){

                        if (bar==1){
                             r=val;
                        }
                        if (bar==2){
                             g=val;
                        }
                        if (bar==3){
                             b=val;
                        }

                        document.getElementById('div').style.backgroundColor="rgb("+r+","+g+","+b+")";
                    }
                </script>
            </head>

            <body onload="set()">

                <div id="div" style="width:400px;height:100px;">

                </div>
                <table border="">
                <tr><td>red</td><td><input id="r_slide" type="range" style="width:200px" min="0" max="255"  onchange="change(this.value,1)"></td></tr>
                <tr><td>blue</td><td><input id="g_slide" type="range" style="width:200px" min="0" max="255" onchange="change(this.value,2)"></td></tr>
                <tr><td>green</td><td><input id="b_slide" type="range" style="width:200px" min="0" max="255" onchange="change(this.value,3)"></td></tr>
                </table>
            </body>
        </html>

您可以使用onInput使更改onInput 请注意,某些版本的IE不支持onInput ,因此我在其中保留了onChange作为后备,以覆盖您的所有基础。

 var r=0; var g=0; var b=0; function set() { r=g=b=128; var div = document.getElementById('div'); div.style.backgroundColor="rgb("+r+","+g+","+b+")"; } function change(val,bar){ if (bar==1){ r=val; } if (bar==2){ g=val; } if (bar==3){ b=val; } var div = document.getElementById('div'); div.style.backgroundColor="rgb("+r+","+g+","+b+")"; } 
 <html> <head> </head> <body onload="set()"> <div id="div" style="width:400px;height:100px;"></div> <table border=""> <tr> <td>red</td> <td> <input id="r_slide" type="range" style="width:200px" min="0" max="255" oninput="change(this.value,1)" onchange="change(this.value,1)"> </td> </tr> <tr> <td>blue</td> <td> <input id="g_slide" type="range" style="width:200px" min="0" max="255" oninput="change(this.value,2)" onchange="change(this.value,2)"> </td> </tr> <tr> <td>green</td> <td> <input id="b_slide" type="range" style="width:200px" min="0" max="255" oninput="change(this.value,3)" onchange="change(this.value,3)"> </td> </tr> </table> </body> </html> 

您可以为此使用输入事件处理程序。 例如:

<input type="range" oninput="change(this.value,x)">

您可以使用onInput事件,而不是在发生更改后触发的onChange 更多信息 )。

需要注意的重要一点是, onInput (仅与input:type=range )在IE8及以下版本,Opera 9及以下版本中均不可用。

<table border="">
     <tr><td>red</td><td><input id="r_slide" type="range" style="width:200px" min="0" max="255"  oninput="change(this.value,1)"></td></tr>
     <tr><td>blue</td><td><input id="g_slide" type="range" style="width:200px" min="0" max="255" oninput="change(this.value,2)"></td></tr>
     <tr><td>green</td><td><input id="b_slide" type="range" style="width:200px" min="0" max="255" oninput="change(this.value,3)"></td></tr>
 </table>

的jsfiddle

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM