Javascript: Как изменить href для всех идентификаторов тегов <area>?

0

Я пытаюсь сделать код ниже, но для каждого идентификатора моих областей. Я пробовал использовать циклы, но я не могу решить, как изменить HREF для каждого идентификатора в соответствии с тегом alt, если это имеет смысл...

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

Код работает для первого идентификатора, но я хочу, чтобы он работал для всех идентификаторов, которые относятся к тегу area, а не мне, просто помещая каждый идентификатор новой переменной, а затем изменяя HREF для каждого идентификатора.

У меня более 60 областей или ID, но мне действительно нужно упростить код, если это возможно.

Если бы кто-нибудь мог мне помочь, это было бы признательно оценено.

Благодарю!

Теги:
tooltip

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';
  • 0
    Большое спасибо! Работает отлично.
0

Спасибо за ваш ответ, ваш ответ работает отлично! Я также нашел альтернативу после некоторых проб и ошибок. Провел несколько дней, пытаясь сделать это Google до отправки вопроса.

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
    Здравствуйте и добро пожаловать в стек переполнения. Если ответ был полезным и / или решил ваш вопрос, не забудьте высказать его или выбрать в качестве выбранного. Это позволяет сообществу знать, что вопрос решен, и помогает любому будущему посетителю с той же проблемой. Раздел справки об этом можно найти здесь
0

вы получаете this внутри функции doSomething поэтому у вас уже есть элемент, поэтому просто назначьте значения

function doSomething(element){
element.href = element.alt + ".html";
};
  • 0
    Ах, конечно. Так глупо, спасибо за ваш ответ!
0

Вместо getElementById вы можете использовать getElementsByTagName ('area'). Это даст вам массив из всех элементов с названием тега "область".

  • 0
    спасибо за ваш ответ :) Получение имени тега намного лучше, спасибо!
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 ++ весь день ..
  • 0
    Работает отлично тоже!

Ещё вопросы

Сообщество Overcoder
Наверх
Меню