window.open() 仅适用于输入类型但不适用于标签?

window.open() only works with input type but not on tags?

我正在尝试使用 window.open() 打开带有标签的新 window,但它似乎不起作用。我是编程新手,所以我经常被卡住,尤其是这个让我找不到解决方案。谁能告诉我我做错了什么?

javascript
var grid2Btn = document.getElementsByClassName('grid2__btn__container');
grid2Btn.addEventListener('click', function(){
    window.open('https://www.google.com/','google', 'top=100,left=100,width=300,height=400');
})

html
<button class="grid2__btn__container">
          <span><img class="magnifier" src="au-logos/search.png" alt="magnifier">click here<span class="new__window__logo"></span></span>
</button> 

document.getElementsByClassName() returns 元素集合。

你可以知道:

  • 通过检查 docs

  • 通过检查其真实输出

    const elements = document.getElementsByClassName('grid2__btn__container');
    console.log(elements);
    
  • 读取方法名:getElementsByClassName().

因此,只需获取结果的第一个数组元素,然后向其添加一个事件侦听器。

const elements = document.getElementsByClassName('grid2__btn__container');

// Take the first element
const grid2Btn = elements[0];

grid2Btn.addEventListener('click', function() {
    alert('Button clicked');
    window.open('https://www.google.com/','google', 'top=100,left=100,width=300,height=400');
});
<button class="grid2__btn__container">
          <span><img class="magnifier" src="au-logos/search.png" alt="magnifier">click here<span class="new__window__logo"></span></span>
</button>