【问题标题】:Handling mouseover adding class, mouseleave, removing class and onclick adding a different class name处理 mouseover 添加类、mouseleave、删除类和 onclick 添加不同的类名
【发布时间】:2021-04-07 13:28:43
【问题描述】:

我一直在尝试创建一个处理单击、鼠标悬停和鼠标离开的自定义函数,但是如果我添加 onlick,则鼠标悬停函数将不起作用。 我曾尝试申请this,但到目前为止它也不起作用,我只设法使鼠标悬停并且不知道如何包含其余功能。

  1. 按钮悬停一次
  2. 将“push_left_side_btn”类添加到 id“left_side”,将“push_right_side_btn”添加到 id“right_side”
  3. 一旦 mouseleave 删除两个类
  4. 点击后添加带有类的 div
function close_store_btn() {
    var element = document.getElementById("left_side");
    element.classList.remove("push_left_side_btn");
    var element = document.getElementById("right_side");
    element.classList.remove("push_right_side_btn");
}
<button onmouseover="close_store_btn()" class="close_clean_wrap">
    <svg width="43px" height="34px" viewBox="0 0 43 34" version="1.1" xmlns="http://www.w3.org/2000/svg"
        xmlns:xlink="http://www.w3.org/1999/xlink">
        <g id="Page-1" stroke="none" stroke-width="1" fill="none" fill-rule="evenodd" fill-opacity="0.6">
            <g id="close_gv_btn" fill="#000000" fill-rule="nonzero" stroke="#FFD79F">
                <g id="left_side" transform="translate(0.857988, 0.236686)">
                    <polygon id="bot_left"
                        transform="translate(15.952663, 24.452663) rotate(90.000000) translate(-15.952663, -24.452663) "
                        points="23.9053254 39.9526627 19.9550819 39.9526627 8 8.95266272 12.4092888 8.95266272 22.3642809 35.6829353">
                    </polygon>
                    <polygon id="top_left"
                        transform="translate(15.952663, 8.500000) scale(1, -1) rotate(90.000000) translate(-15.952663, -8.500000) "
                        points="23.9053254 24 19.9550819 24 8 -7 12.4092888 -7 22.3642809 19.7302726"></polygon>
                </g>
                <g id="right_side" transform="translate(10.500000, 0.236686)">
                    <polygon id="bot_right"
                        transform="translate(16.000000, 24.500000) scale(-1, 1) rotate(90.000000) translate(-16.000000, -24.500000) "
                        points="24 40 20.0262431 40 8 9 12.4355345 9 22.4497826 35.7302726"></polygon>
                    <polygon id="top_right"
                        transform="translate(16.000000, 8.500000) scale(-1, -1) rotate(90.000000) translate(-16.000000, -8.500000) "
                        points="24 24 20.0262431 24 8 -7 12.4355345 -7 22.4497826 19.7302726"></polygon>
                </g>
            </g>
        </g>
    </svg>
</button>

【问题讨论】:

    标签: javascript function button var


    【解决方案1】:

    您应该添加事件侦听器以添加这些功能。

    例如,您正在选择按钮,但您没有定义事件。

    试试下面的:

    <button id="btn" class="close_clean_wrap">
        Svg Content Here
    </button>
    

    对于 JS:

    var element = document.getElementById("left_side");
    var element2 = document.getElementById("right_side");
    document.getElementById('btn').addEventListener('mouseover', () => {
        //For removing classes
        element.classList.remove("push_left_side_btn");
        element2.classList.remove("push_right_side_btn");
    
    });
    
    document.getElementById('btn').addEventListener('mouseout', () => {
        //For adding classes
        element.classList.add("push_left_side_btn");
        element2.classList.add("push_right_side_btn");
    });
    

    【讨论】:

    • 我已经尝试过了,但我猜它没有用,因为它试图从无法访问的 svg 中获取 id。这个想法是,当您将按钮悬停时,您会潜入 svg 并获取 id,然后为它们提供一个动画类,例如路径或其他东西。
    • 我可以知道你为什么要向 SVG 组件添加 ID 吗?或者,你能解释一下你的要求吗??
    • 我只是想控制其中一些,如果有更好的控制方法请告诉我。
    • 您是否要在 SVG 中移动单个多边形?
    • 是的,我也将我的帖子编辑成我想要实现的步骤。
    猜你喜欢
    • 1970-01-01
    • 2013-10-26
    • 1970-01-01
    • 2011-10-31
    • 2020-01-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-06-06
    相关资源
    最近更新 更多