javascript - 按钮元素可以有子节点吗?

标签 javascript html dom nodes

如果我有一个 <b>里面<button>标签,是 <b>因此 <button> 的子节点标签?考虑下面的代码:

<button id='mooo'><b>Cows can't mooo</b></button>

Javascript:

x = document.getElementById('mooo');
x.addEventListener("Click", mooo);

function mooo(e){
if(e.target.childNode == "B"){
console.log("B is a child of Button");
}else{
console.log("B is not a child of Button");
}

代码返回后者,但我只需要确定 B 是否确实不是 BUTTON 的子元素

最佳答案

是的,button 元素是带有内容的元素。你只是没有正确检查他们的内容;元素上没有 childNode 属性。有 childNodes (集合)、firstChildlastChild 及其元素版本 childrenfirstElementChild lastElementChild,但没有 childNode

您还使用了 Click 而不是 click(事件名称区分大小写),并且 e.target 可能是b 元素而不是 button (您希望 thise.currentTarget 知道您正在引用按钮)。

实例:

var x = document.getElementById('mooo');
x.addEventListener("click", mooo);

function mooo() {
  if (this.firstElementChild.tagName == "B") {
    console.log("B is a child of Button");
  } else {
    console.log("B is not a child of Button");
  }
  console.log("Contents of the button:");
  for (let child = this.firstChild; child; child = child.nextSibling) {
    switch (child.nodeType) {
      case 1: // Element
        console.log(child.tagName + " element, innerHTML = " + child.innerHTML);
        break;
      case 3: // Text node
        console.log("Text node, nodeValue = " + child.nodeValue);
        break;
      default:
        console.log(child.nodeName);
        break;
    }
  }
}
<button id='mooo'><b>Cows can't mooo</b></button>

相比之下,input type="button" 元素为 void elements ;他们不能有内容,他们的 childNodes 集合始终为空。

关于javascript - 按钮元素可以有子节点吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50543016/

相关文章:

javascript - 循环中创建的所有计时器(使用 setTimeout)同时触发?

javascript - Webpack无法在Electron应用程序中从Nodejs打包https

javascript - 添加 html 元素的简单用户脚本

javascript - 如何在自定义验证后使用 JavaScript 提交 ASP.NET

html - 为什么 navbar-brand 隐藏在 chrome for mobile 上?

html - 为什么我的 css Class 应用不一致?

javascript - 根据循环的选择框选择动态显示和隐藏字段

typescript - 如何在 Typescript 中使用 SVGDocument?

javascript - document.querySelectorAll 与 div.style 一起不起作用

javascript - 给定此哈希函数、预期输出和输入字符串的长度,我如何找到返回给定结果的输入字符串?