使用href获取父div

时间:2013-06-26 23:49:42

标签: javascript dom

是否可以仅使用href找到父div?

我基本上有以下功能:

var hrefs = [];
[].forEach.call(document.querySelectorAll("area"), function (value, index, array) {
    hrefs.push(value.getAttribute("href"));
});

for (var i = 0; i < hrefs.length; i++) {
    console.log(hrefs[i]);
    }

找到属于html区域的所有href。我试图找到这些href的父元素,以便我可以向父元素追加一个新的div。如果这不可能,我需要什么属性才能找到该属性的父div。

5 个答案:

答案 0 :(得分:1)

你想要这样的东西吗?:

var hrefs = document.querySelectorAll("area");

for (var i = 0; i < hrefs.length; i++) {
    console.log(hrefs[i].getAttribute('href'));
    console.log(hrefs[i].parentNode);
}

答案 1 :(得分:0)

首先使用所有这些元素创建一个对象:

var hrefs = {};

Array.prototype.forEach.call(document.querySelectorAll("area[href]"), function (element) {
    hrefs[ element.getAttribute("href") ] = element;
});

然后你可以使用.parentNode

来找到他们的父母
for ( var i in hrefs ) {
    console.log( i, hrefs[i].parentNode );
}

因此,如果您想稍后向http://www.google.com的父元素添加元素,则可以执行以下操作:

hrefs['http://www.google.com'].parentNode.appendChild( element );

答案 2 :(得分:0)

我不明白为什么你不会这样做:

[].forEach.call(document.querySelectorAll("area"), function(area) {
    area.parentNode.appendChild(
        document.createElement("div")
    );
});

答案 3 :(得分:0)

策略是获取所有区域元素,然后匹配其href值。以下内容返回第一个匹配的区域元素:

function getAreaByHref(href) {
  var areas = document.getElementsByTagName('area');
  for (var i = 0, iLen=areas.length; i<iLen; i++) {
    if (areas[i].href == href) {
      return areas[i].parentNode;
    }
  }
}

如果你认为会有多个,请让函数构建一个匹配元素数组并返回它。

答案 4 :(得分:-2)

如果使用jQuery,可以使用.parent()方法来完成此任务。