通过类名称获取第二个元素(如果存在)

时间:2018-11-23 17:11:16

标签: javascript

我正在尝试通过这样的类名获取元素的ID

var prod_id2 = document.getElementsByClassName('select-selected')[1].id
document.getElementById('hidden-input-2').value = prod_id2;

这很好用,但是我的问题是,如果该类只有一个元素,它将破坏功能,所以我需要某种if语句才能仅在该类有第二个div时定义此var。 有什么想法吗?

3 个答案:

答案 0 :(得分:3)

尝试一下:

const elements = document.querySelectorAll('.test');

if (elements[1]) {
  elements[1].innerText = 'Hithere';
}
<div class="test">hi</div>
<div class="test">hi</div>
<div class="test">hi</div>

  1. document.querySelectorAll('.test');选择具有类test的所有元素并返回节点列表。
  2. 然后我们可以通过 nodelist 的第二个元素来访问元素[1]。

答案 1 :(得分:0)

它破坏了我认为的功能,因为您正在专门抓取第二个元素。您可以这样做:

const prod_id2 = document.querySelectorAll('.select-selected');

遍历元素并获取ID

prod_id2.forEach((prod, index) => {
 if(index === 2) {
  document.getElementById('hidden-input-2').value = prod.id;
 }

})

答案 2 :(得分:0)

这里是检查第二个元素的方法。

您还可以设置另一个fallback,它不同于null:

document.addEventListener("DOMContentLoaded", function(event) {
  var selectedElements = document.querySelectorAll('.selected-selected'),
    prod_id2 = selectedElements[1] || null;
  alert(prod_id2)
});
<div id="test" class="selected-selected"></div>

您还可以然后检查该值:

if (prod_id2) { // do some other stuff with the set value }