javascript - 将元素 ID 输出到控制台

标签 javascript

我想在点击浏览器控制台时输出元素的 ID,但是我不知道如何以字符串格式执行此操作 - 目前输出为空。

HTML:

<div id = "1" class = "column">
    <a href="javascript:;" onclick="addClassToImage(this)"> <img class="img-class" src="https://manilva.club/wp-content/uploads/2019/04/By-Product.png" alt="By Product" /></a>
 </div>

JavaScript:

function addClassToImage(element) 
  {
    var innerImage = element.querySelector('img');
    var id  = element.id;
    if(innerImage) 
    {
      if(innerImage.classList.contains('clicked')) 
      {
        innerImage.classList.remove('clicked');
      }
      else 
      {
        innerImage.classList.add('clicked');
        console.log(id);
      }
    }
}

最佳答案

根据您当前的代码,只有父元素具有 id 属性,您正在尝试获取被单击元素的 id,而不是先获取父节点再获取其 id。使用 Node#parentNode 可以获取父节点引用的位置节点的属性。

function addClassToImage(element) {
  var innerImage = element.querySelector('img');
  // get parent node and then its id
  var id = element.parentNode.id;
 
  if (innerImage) {
    if (innerImage.classList.contains('clicked')) {
      innerImage.classList.remove('clicked');
    } else {
      innerImage.classList.add('clicked');
      console.log(id);
    }
  }
}
<div id="1" class="column">
  <a href="javascript:;" onclick="addClassToImage(this)"> f<img class="img-class" src="https://manilva.club/wp-content/uploads/2019/04/By-Product.png" alt="By Product" /></a>
</div>


更新: 如果您想获取具有 id 属性的最近祖先的 id,请使用 Node#closest方法与 CSS has attribute selector (如 @T.J.Crowder 所建议)。

function addClassToImage(element) {
  var innerImage = element.querySelector('img');
  // get parent node and then its id
  var id = element.closest('[id]').id;
 
  if (innerImage) {
    if (innerImage.classList.contains('clicked')) {
      innerImage.classList.remove('clicked');
    } else {
      innerImage.classList.add('clicked');
      console.log(id);
    }
  }
}
<div id="1" class="column">
  <a href="javascript:;" onclick="addClassToImage(this)"> f<img class="img-class" src="https://manilva.club/wp-content/uploads/2019/04/By-Product.png" alt="By Product" /></a>
</div>

关于javascript - 将元素 ID 输出到控制台,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55561373/

相关文章:

javascript - Angular 7 - 上传多个文件以及数据和报告进度

javascript - 通过一个复选框选择对表进行多项更改 - 使用 id 和类更改一个 td 的类和父 tr 的样式

javascript - 使用 Angular 将 Json 打印为 HTML 字符串

javascript - 如何使用多个属性选择器进行选择?

javascript - 在 AngularJS 中的 ng-model 上定义一个空值

javascript - 使用 npm 请求库时未保存 Cookie

javascript - 如何在 ReactJS 无状态组件中用纯 JavaScript 填充输入值?

javascript - 如何在 Shiny R 应用程序中设置 DataTables 行回调?

javascript - angular watchers 和 event listeners 以什么顺序执行?

Javascript Mocha 测试 - 在函数表达式中测试函数表达式