2013-10-20 48 views
0

我正在嘗試執行下面的代碼,但對於我的區域的每個ID。我已經使用循環試過,但我不能工作如何根據ALT標籤更改HREF每個ID如果是有道理的......Javascript:如何更改所有<area>標記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與一個新變量相關聯,然後更改eac的HREF h id。

我有超過60個區域或ID的,但我真的需要簡化代碼,如果可能的話。

如果有人可以幫助我,這將感激地讚賞。

謝謝!

回答

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'; 
+0

非常感謝您!完美運作。 – AlpaxJ1

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

@PaulS。對不起,我一直在寫C++代碼.. – yakiang

+0

完美地工作! – AlpaxJ1

0

相反的getElementById的,你可以使用的getElementsByTagName( '區')。這將爲您提供標籤名稱爲「area」的所有元素的數組。

+0

感謝您的回覆:)獲取標籤名稱好得多,謝謝! – AlpaxJ1

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

} 
}; 

你的方式好得多&感謝您的快速響應。問題解決了!

+1

你好,歡迎來到堆棧溢出。如果答案有幫助並且或者解決了您的問題,請不要忘記將其解決,或者將其選爲所選答案。這讓社區知道這個問題已經處理,並幫助任何未來的訪問者有同樣的問題。關於這個幫助主題可以在[** here **](http://stackoverflow.com/help/someone-answers) –

0

你得到thisdoSomething功能裏面,所以你已經擁有的元素,以便只分配值

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

啊,當然。太傻了,謝謝你的回答! – AlpaxJ1