默认情况下在开始时以条件 AND 执行一行
Executing a line in a conditional AND by default on start
我有这个fiddle:http://jsfiddle.net/zhaem/Lyzrtefo/7/
var orangeMode = true
var isTracking = true
getMouseXY = function(e) {
if (isTracking) {
var tempX = e.pageX
var tempY = e.pageY
if (tempX < 0){tempX = 0}
if (tempY < 0){tempY = 0}
document.getElementById("circle1").style.top = (tempY - 25) + "px";
document.getElementById("circle1").style.left = (tempX - 25) + "px";
}
return true
}
document.onmousemove = getMouseXY;
var toggleTrackCircle = function() {
isTracking = !isTracking;
console.log(isTracking);
}
document.getElementById("circle1").addEventListener("click", toggleTrackCircle);
flip = function() {
orangeMode = !orangeMode;
if (orangeMode) {
document.getElementById("circle1").style.backgroundColor = "orange";
document.getElementById("circle1").addEventListener('mouseover', function() {isTracking = true;})
// When the above line is executed the circle will stick to your cursor on HOVER after clicking and setting it down.
} else {
document.getElementById("circle1").style.backgroundColor = "blue";
}
}
document.getElementById("box3").addEventListener("click", flip);
有这一行,当存在时将改变交互的行为。 (您可以随时单击以阻止光标跟踪您,但是当这条线存在时,圆圈会在悬停时重新粘附在它上面,如果没有,它只会在悬停 + 单击时重新粘附。
document.getElementById("circle1").addEventListener('mouseover', function() {isTracking = true;})
我正在尝试将它包装在翻转函数中的一些条件逻辑中(您可以通过点击角落的红色框来控制),以便 orangeMode == 它停留在悬停状态而不是 orangeMode 它只会重新 -坚持点击。
翻转功能可以很好地改变颜色,但此事件侦听器的性能不如我想要的。 (一旦你循环通过它确实有效,但对于任何一个状态,它都不是 运行 orangeMode 卸载。
如有任何帮助,我们将不胜感激。
你需要把'isTracking=true;'放在一个命名函数中,这样你就可以使用"removeEventListener"来关闭这个函数。这意味着您添加此功能:
var trackCircle = function() {
isTracking = true;
}
然后你在点击时引用它而不是匿名函数:
circle.addEventListener('mouseover', trackCircle)
然后您只需在您的 else 中删除该事件即可:
circle.removeEventListener('mouseover', trackCircle)
哦,我会在顶部添加这个,这样您就不需要一直重复 getElementById 短语:
circle = document.getElementById("circle1");
希望对您有所帮助。哦,这是对 fiddle:
的编辑
我有这个fiddle:http://jsfiddle.net/zhaem/Lyzrtefo/7/
var orangeMode = true
var isTracking = true
getMouseXY = function(e) {
if (isTracking) {
var tempX = e.pageX
var tempY = e.pageY
if (tempX < 0){tempX = 0}
if (tempY < 0){tempY = 0}
document.getElementById("circle1").style.top = (tempY - 25) + "px";
document.getElementById("circle1").style.left = (tempX - 25) + "px";
}
return true
}
document.onmousemove = getMouseXY;
var toggleTrackCircle = function() {
isTracking = !isTracking;
console.log(isTracking);
}
document.getElementById("circle1").addEventListener("click", toggleTrackCircle);
flip = function() {
orangeMode = !orangeMode;
if (orangeMode) {
document.getElementById("circle1").style.backgroundColor = "orange";
document.getElementById("circle1").addEventListener('mouseover', function() {isTracking = true;})
// When the above line is executed the circle will stick to your cursor on HOVER after clicking and setting it down.
} else {
document.getElementById("circle1").style.backgroundColor = "blue";
}
}
document.getElementById("box3").addEventListener("click", flip);
有这一行,当存在时将改变交互的行为。 (您可以随时单击以阻止光标跟踪您,但是当这条线存在时,圆圈会在悬停时重新粘附在它上面,如果没有,它只会在悬停 + 单击时重新粘附。
document.getElementById("circle1").addEventListener('mouseover', function() {isTracking = true;})
我正在尝试将它包装在翻转函数中的一些条件逻辑中(您可以通过点击角落的红色框来控制),以便 orangeMode == 它停留在悬停状态而不是 orangeMode 它只会重新 -坚持点击。
翻转功能可以很好地改变颜色,但此事件侦听器的性能不如我想要的。 (一旦你循环通过它确实有效,但对于任何一个状态,它都不是 运行 orangeMode 卸载。
如有任何帮助,我们将不胜感激。
你需要把'isTracking=true;'放在一个命名函数中,这样你就可以使用"removeEventListener"来关闭这个函数。这意味着您添加此功能:
var trackCircle = function() {
isTracking = true;
}
然后你在点击时引用它而不是匿名函数:
circle.addEventListener('mouseover', trackCircle)
然后您只需在您的 else 中删除该事件即可:
circle.removeEventListener('mouseover', trackCircle)
哦,我会在顶部添加这个,这样您就不需要一直重复 getElementById 短语:
circle = document.getElementById("circle1");
希望对您有所帮助。哦,这是对 fiddle:
的编辑