Javascript:如何更改所有<区域>标签ID的href

Javascript: How to change href for all <area> tag ID's?

本文关键字:区域 ID href 标签 何更改 Javascript      更新时间:2023-09-26

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

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

谢谢!

看起来你想使用 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';
var areas = document.getElementByTagName("area");
for (var i = 0; i < areas.length; ++ i) {
    var h = areas[i].alt;
    areas[i].href = h + ".html";
}

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

感谢您的回复,您的答案非常有效!经过一些反复试验,我也找到了替代方案。在发送问题之前花了几天时间尝试谷歌方法。

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";
}
};

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

你在doSomething函数中得到了this,所以你已经有了元素,所以只需分配值

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