onMouseMove + onMouseDown 调用函数

onMouseMove + onMouseDown to call function

我这里有一个真正的问题。我希望仅在单击对象时以及鼠标移到对象上时才调用函数。这是一个(语法迟钝的)示例来帮助您理解:

<div onMouseMove+onMouseDown="function()" ... ></div>

我正在想办法解决这个问题。如果我创建一个 onMouseDown 触发一个函数,该函数将更改我的 onMouseMove - 函数的名称,并使用 "filler" 或 "substitute" 函数怎么办?让我解释一下:

<div id="object" onMouseMove="substituteFiller()" onMouseDown="nameChanger()" ... ></div>
<script>
    function nameChanger(){
        document.getElementById("object").onMouseMove = "theRealFunction()"; 
    }
</script>
<script>
    function theRealFunction() ... 

当我将鼠标移到对象上时什么也不会发生,因为函数substituteFiller() 将不起作用。但是,当鼠标单击对象时,onMouseMove- 函数将是正确的,theRealFunction(),并且 theRealFunction() 现在将在鼠标移动时被调用。

这样我可以 activate/call theRealFunction() 只有当对象被点击和鼠标移动时。但是,它不起作用。

明确一点:如何更改正在调用的函数的名称?如何使一个函数仅在单击对象和移动鼠标时调用?

此致,希望您理解!如果没有,我猜是评论!

它是我的一个网页的一部分..检查它 out.May 这会对你有所帮助..

<div id="Log_frm">
<fieldset id="fld_1">
    <!--<legend>Log In</legend>-->        
    <div id="log_l" onmouseover="dv_in();" onmouseout="dv_out();" style="background-color:#0C93D4;font-size: 15px;height: 30px;padding: 7px 32px 0px 32px;font-weight:bold; float: left;-webkit-border-top-left-radius: 5px;">
        <a  href="#" onclick="">Log In</a>
    </div>
    <div id="log_r" onmouseover="dv_out();" onmouseout="dv_in();"style="background-color: #0C93D4;font-size: 15px;font-weight:bold; float: right;height: 30px;padding: 7px 14px 0px 12px;-webkit-border-top-right-radius: 5px;">
        <a  href="#">Need Any Help</a>
    </div >   
    </fieldset>
</div>

<style>
#Log_frm {
    width: 250px;
    height: 60px;
    margin-top: 10px;
    position: absolute;
    font-size: 12px;
    float: right;
    right: 0px;
}

#Log_frm a {
    color: #fff;
    text-decoration: underline !important;
    left: auto;
    margin-right: auto;

}

<script type="text/javascript">
        function dv_in() {  
            log_l.style.backgroundColor="#06C"; 
            log_r.style.backgroundColor="#0C93D4"; 
        }
        function dv_out() {  
            log_l.style.backgroundColor="#0C93D4"; 
            log_r.style.backgroundColor="#06C";
        }


</script>

注册..

好了,你只需要分别注册3个事件处理器:

  1. 鼠标按下
  2. 鼠标弹起
  3. 鼠标移动

您将在鼠标按下向上 时分别将布尔标志切换为真和假。然后,在 mouse move 处理程序上,您需要检查标志是否为真,这意味着鼠标按钮已按下。最后,我们检查光标是否真的从它的初始位置移动了。

这是JSFiddle

var example = document.getElementById("example");
var position = {
  X: 0,
  Y: 0
};

example.onmousedown = function (down) {
  downFlag = true;
  // Record click position
  position.X = down.clientX;
  position.Y = down.clientY;
};

example.onmouseup = function (up) {
  downFlag = false;
};

example.onmousemove = function (move) {
  if (downFlag) {
    if (position.X !== move.clientX || position.Y !== move.clientY) {
      // Do stuff here
    }
  }
};