javascript - javascript中的事件处理程序

标签 javascript html css

我有这个片段,我想做的是当你点击 div 时,它不会受到鼠标悬停和鼠标移开的影响。非常感谢你的所有帮助。

<div id="div" onmouseover="over_div()" onmouseout="out_div()" onclick="click_div()" style="width:100px; height:100px; border:2px solid black"></div>
<script>
function click_div(){
    document.getElementById("div").style.backgroundColor="red";
    }

function over_div(){
    document.getElementById("div").style.backgroundColor="green";
    }

function out_div(){
    document.getElementById("div").style.backgroundColor="white";
    }
</script>

最佳答案

你可以这样做:

<div id="div" onmouseover="over_div()" onmouseout="out_div()" onclick="click_div()" style="width:100px; height:100px; border:2px solid black"></div>
<script type="text/javascript">
var isClicked = false;
function click_div(){
    isClicked = true;
    document.getElementById("div").style.backgroundColor="red";
    }

function over_div(){
    if(!isClicked )
        document.getElementById("div").style.backgroundColor="green";
    }

function out_div(){
    if(!isClicked )
        document.getElementById("div").style.backgroundColor="white";
    isClicked = false;
    }
</script>

但是,使用全局变量是一种不好的做法。如果你理解闭包的概念,你可以使用类似这样的东西:

<div id="div" style="width:100px; height:100px; border:2px solid black"></div>
<script type="text/javascript">
(function()
{
    var div = document.getElementById("div");
    var isClicked = false;
    div.addEventListener("click", function() {
        div.style.backgroundColor = "red";
        isClicked = true;
    });
    div.addEventListener("mouseover", function() {
        if(!isClicked)
           div.style.backgroundColor = "green";
    });
    div .addEventListener("mouseout", function() {
        if(!isClicked)
           div.style.backgroundColor = "white";
        isClicked = false;
    });
}
)();
</script>

使用此方法,divisClicked 变量将不会与稍后在您的代码中具有相同名称的其他变量发生冲突。

关于javascript - javascript中的事件处理程序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18780459/

相关文章:

javascript - net::ERR_ABORTED 429(请求过多),访问...被 CORS 策略阻止

javascript - 使用 Crafty.js 制作函数

html - 在 CSS 中内联显示图像

css - 如何使用 :focus? 等 CSS 选择器修改 sibling 的属性

javascript - 使 svg 快照图像在 div 上排列

css - 第 n 个和第 m 个兄弟元素的选择器?

javascript - 无法更新 status_code

html - 更好的用户界面设计,轻松预订

html - .html 页面中的 css 应该放在哪里?

javascript - 图表不遵守宽度和高度属性