Javascript 单击“使用”按钮,svg图标不起作用

Javascript 单击“使用”按钮,svg图标不起作用,javascript,html,css,Javascript,Html,Css,当我单击带有红色背景的SVG时,它不起作用,但是如果我在SVG区域之外单击,它就起作用,如果我使用普通文本,它也可以起作用 该按钮似乎受到SVG的阻碍 我的问题是为什么使用SVG不起作用,但是使用文本起作用,如果我想让它起作用呢 css: .dropbtn{ 背景色:#4CAF50; 颜色:白色; 填充:16px; 字体大小:16px; 边界:无; 光标:指针; } .dropbtn:悬停,.dropbtn:焦点{ 背景色:#3e8e41; } .下拉列表{ 浮动:对; 位置:相对位置; 显示

当我单击带有红色背景的SVG时,它不起作用,但是如果我在SVG区域之外单击,它就起作用,如果我使用普通文本,它也可以起作用

该按钮似乎受到SVG的阻碍

我的问题是为什么使用SVG不起作用,但是使用文本起作用,如果我想让它起作用呢

css:


.dropbtn{
背景色:#4CAF50;
颜色:白色;
填充:16px;
字体大小:16px;
边界:无;
光标:指针;
}
.dropbtn:悬停,.dropbtn:焦点{
背景色:#3e8e41;
}
.下拉列表{
浮动:对;
位置:相对位置;
显示:内联块;
}
.下拉内容{
显示:无;
位置:绝对位置;
背景色:#f1f1;
最小宽度:160px;
溢出:自动;
盒影:0px 8px 16px 0px rgba(0,0,0,0.2);
右:0;
z指数:1;
}
.下拉内容a{
颜色:黑色;
填充:12px 16px;
文字装饰:无;
显示:块;
}
.下拉列表a:悬停{背景色:#ddd;}
.show{display:block;}
html:

<div class="dropdown">
  <button onclick="myFunction()" class="dropbtn">
    <svg viewBox='0 0 10 8' width='40' style="background:red;">
        <path d='M1 1h8M1 4h 8M1 7h8' stroke='#000' stroke-width='2' stroke-linecap='round'/>
    </svg>
  </button>
  
  <div id="myDropdown" class="dropdown-content">
    <a href="#">Home</a>
    <a href="#">About</a>
    <a href="#">Contact</a>
  </div>
</div>

javascript:

<script>
function myFunction() {
  document.getElementById("myDropdown").classList.toggle("show");
}

window.onclick = function(event) {
  if (!event.target.matches('.dropbtn')) {
    var dropdowns = document.getElementsByClassName("dropdown-content");
    var i;
    for (i = 0; i < dropdowns.length; i++) {
      var openDropdown = dropdowns[i];
      if (openDropdown.classList.contains('show')) {
        openDropdown.classList.remove('show');
      }
    }
  }
}
</script>

函数myFunction(){
document.getElementById(“myDropdown”).classList.toggle(“show”);
}
window.onclick=函数(事件){
如果(!event.target.matches('.dropbtn')){
var dropdowns=document.getElementsByClassName(“下拉内容”);
var i;
对于(i=0;i
在大多数浏览器中,SVG不能作为单击区域使用。您要做的是将以下内容放在svg上,使其可以说是“对单击透明”,或者说是正确的术语,它所做的实际上是使其不可单击

.dropbtn > svg {
  pointer-events: none;
}
.dropbtn > svg {
  pointer-events: none;
}