我在这有个大麻烦。我希望只有在单击对象和鼠标移动到对象上时才调用函数。下面是一个(语法重定向的)示例,以了解您的理解:
<div onMouseMove+onMouseDown="function()" ... ></div>我在想办法解决这个问题。如果我做了一个onMouseDown来触发一个函数,它将改变我的onMouseMove -函数的名称,并使用一个“填充”或“替代”函数,该怎么办?让我解释一下:
<div id="object" onMouseMove="substituteFiller()" onMouseDown="nameChanger()" ... ></div>
<script>
function nameChanger(){
document.getElementById("object").onMouseMove = "theRealFunction()";
}
</script>
<script>
function theRealFunction() ... 当我将鼠标移到对象上时,不会发生任何事情,因为函数substituteFiller()不能工作。但是,当鼠标单击对象时,onMouseMove-函数将是正确的,theRealFunction(),而当鼠标移动时,theRealFunction()将被调用。
这样,只有在单击对象和鼠标移动时才能激活/调用theRealFunction()。但是,它不起作用。
要明确的是:我如何更改正在调用的函数的名称?当单击对象并移动鼠标时,如何才能使函数被调用?
最诚挚的问候,希望你能理解!如果没有,我想评论一下吧!
发布于 2015-08-09 17:17:48
好的,您需要做的就是单独注册3个事件处理程序:
在鼠标向下和向上分别切换为true和false的布尔标志。然后,在鼠标移动处理程序上,您需要检查标志是否为真,这意味着鼠标按钮已经关闭。最后,我们检查光标是否真的从它的初始位置移动。
这是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
}
}
};发布于 2015-08-09 17:14:28
这是我的一个网页page..Check It 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>雷吉..。
https://stackoverflow.com/questions/31906318
复制相似问题