【问题标题】:How to get index of child in a div? [duplicate]如何在div中获取孩子的索引? [复制]
【发布时间】:2019-05-15 19:36:36
【问题描述】:

我有三个需要变换样式的图像。生成此样式的值并保存在数组中。

var img = [1.jpg, 2.jpg, 3.jpg]
var translateHoverValues = [60,120,180]

我在悬停时获得了图像的 id,我不知道如何根据 id 从数组中选择所需的值。 也许 div 中有某种 img 的索引/位置编号,所以我可以选择正确的值形式数组。

悬停时我会得到图像的 id,如下所示:

onmouseover="imgHover(this)" //html
function imgHover(obj){      //JS
  var idImg = obj.id       //if logged gives back: img1, img2 or img3
  var z = document.getElementById(idImg) //hovered image
  z.style.transform = 'translateX(-'+translateHoverValues[n]+'px)'
  ......
}

我的研究: https://www.w3schools.com/jsref/prop_element_children.asp 使用children.length,我可以看出我的 div 的长度为 3,因为 3 张图片。 使用children[2]我们可以选择特定的孩子,但是我们如何找出悬停图像的索引?

谢谢。

【问题讨论】:

  • 你改变了整数原型吗?否则1.jpg 肯定会抛出异常...

标签: javascript dom


【解决方案1】:

你可以像下面这样使用indexOf()

var images = Array.prototype.slice.call(document.getElementById('container').children);
images.forEach(function(el){
  el.addEventListener('mouseover', getIndex);
});
function getIndex(){
  //console.clear(); // clear the console
  var index = images.indexOf(this);
  document.getElementById('index').textContent = 'The index of the image is: ' + index;
}
<div id="container">
  <img src="img_1.jpg" alt="Image 1">
  <img src="img_2.jpg" alt="Image 2">
  <img src="img_3.jpg" alt="Image 3">
</div>
<div id="index"></div>

【讨论】:

  • 谢谢!喜欢你的评论:清除控制台:^) 我有一个问题:我怎么能把这个 images.forEach(function(el){ 做成一个单独的函数?因为我需要在这个函数中返回索引。
  • @miomate,forEach() 不是 return。你可以维护一个变量而不是return:)
  • 是的,我设法做到了,但解决方案伤害了我的眼睛codepen.io/miomate/pen/arpVPQ
  • @miomate,您可能希望像我在更新的答案中那样在元素中显示它们:)
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-08-27
  • 2014-12-15
  • 2016-06-16
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多