Javascript:如何更改所有<area />标签ID的href?

时间:2013-10-20 16:33:22

标签: javascript jquery html tooltip

我正在尝试执行下面的代码,但是我的区域的每个ID。我尝试过使用循环,但是如果有意义的话,我无法根据alt标签更改每个ID的HREF ......

JAVASCRIPT:

function doSomething(getID){
var a = document.getElementById('cp1');
var b = getID.alt;
a.href = b + ".html";
};

HTML:

<area id="cp1" class="jTip" shape="rect" coords="0,77,41,123"  alt="Place1" onmouseover="javascript:doSomething(this);" href="javascript:doSomething(this);"> 
<area id="cp2" class="jTip" shape="rect" coords="0,122,41,171" alt="Place2" onmouseover="javascript:doSomething(this);" href="javascript:doSomething(this);">  
<area id="cp3" class="jTip" shape="rect" coords="0,220,41,170" alt="Place3" onmouseover="javascript:doSomething(this);" href="javascript:doSomething(this);">

代码适用于第一个ID,但我希望它适用于与区域标记相关的所有ID而不是我只是为每个ID添加一个新变量,然后更改每个ID的HREF。

我有超过60个区域或ID,但我确实需要简化代码。

如果有人能帮助我,我将不胜感激。

谢谢!

5 个答案:

答案 0 :(得分:0)

您希望使用document.getElementsByTagName,然后返回NodeList,然后您可以迭代。

var areas = document.getElementsByTagName('area'), // get
    i;

for (i = 0; i < areas.length; ++i)                 // loop
    areas[i].href = areas[i].alt + '.html';

答案 1 :(得分:0)

var areas = document.getElementByTagName("area");
for (var i = 0; i < areas.length; ++ i) {
    var h = areas[i].alt;
    areas[i].href = h + ".html";
}

答案 2 :(得分:0)

您可以使用getElementsByTagName('area')代替getElementById。这将为您提供一个包含标签名称“area”的所有元素的数组。

答案 3 :(得分:0)

感谢您的回复,您的回答非常有效!我在经过一些试验和错误后也找到了替代方案。在发送问题之前花了几天试图谷歌的方式。

var tag = document.getElementsByClassName('jTip');
for (var i = 0; i < tag.length; ++i) {

var a = document.getElementById(tag[i].id);
var b = getID.alt;
a.href = b + ".html";

}
};

你的方式好多了感谢您及时的回复。问题解决了!

答案 4 :(得分:0)

您在this函数中获得了doSomething,因此您已经拥有该元素,因此只需指定值

function doSomething(element){
element.href = element.alt + ".html";
};