0

我正在尝试执行以下代码,但针对我所在区域的每个 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,但如果可能的话,我真的需要简化代码。

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

谢谢!

4

5 回答 5

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';
于 2013-10-20T16:37:41.017 回答
0
var areas = document.getElementByTagName("area");
for (var i = 0; i < areas.length; ++ i) {
    var h = areas[i].alt;
    areas[i].href = h + ".html";
}
于 2013-10-20T16:38:24.680 回答
0

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

于 2013-10-20T16:41:32.960 回答
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";

}
};

您的方式要好得多,感谢您的快速响应。问题解决了!

于 2013-10-20T16:44:10.450 回答
0

您正在进入函数this内部,doSomething因此您已经拥有该元素,因此只需分配值

function doSomething(element){
element.href = element.alt + ".html";
};
于 2013-10-20T16:44:30.777 回答