getElementByClassName с несколькими результатами

0

У меня есть небольшой код, созданный с DOM и Javascript. Он должен создать всплывающую подсказку ниже ссылки. Он работает по назначению для одной ссылки, но теперь я понял, что мне нужно иметь несколько ссылок, поэтому я не могу использовать <a id> как я уже использовал.

В моем коде я в настоящее время прокомментировал часть xmlhttp, но мне это нужно в будущем. Не возражайте.

Javascript:

   function createTooltip(str)
   {
      if (str == "" || !str)
      {
         return;
      }

      if (window.XMLHttpRequest)
      {
         xmlhttp = new XMLHttpRequest();
      }
      else // for IE5 and IE6
      {
         xmlhttp = new ActiveXObject("Microsoft.XMLHTTP");
      }

      /*xmlhttp.onreadystatechange = function()
      {
         if (xmlhttp.readyState==4 && xmlhttp.status==200)
         {*/
            //document.getElementById("txtHint").innerHTML=xmlhttp.responseText;
            var tooltip = document.createElement("div");
            var link = document.getElementById("tooltip");
            tooltip.setAttribute('id', 'tooltip-style');
            tooltip.innerHTML = "<p>piece of crap</p>";

            if (str == link.rel)
            {
               link.parentNode.insertBefore(tooltip, link.nextSibling);
            }
         /*}
      }
      xmlhttp.open("GET", "tooltip.php?s="+str, true);
      xmlhttp.send();*/
   }

   function removeTooltip(str)
   {
      var tooltip = document.getElementById("tooltip-style");
      tooltip.setAttribute('id', '');
      tooltip.innerHTML = "";
   }

HTML:

<a href="#" rel="35" onmouseover="createTooltip(this.rel);" onmouseout="removeTooltip(this.rel);" id="tooltip">Item</a><br><br>
<a href="#" rel="25" onmouseover="createTooltip(this.rel);" onmouseout="removeTooltip(this.rel);" id="tooltip">Item</a>

Предполагается, что код создает блок div ниже ссылки, которую вы наводили, а не на каждую ссылку. Я пытался играть с getElementByClassName в течение нескольких часов, но я просто не могу заставить его работать. Также отметим, что значение <a rel> вряд ли будет уникальным в будущем.

Спасибо за ваше время. Я ценю это.

  • 2
    «Я пытался поиграть с getElementByClassName в течение нескольких часов, но я просто не могу заставить его работать» Это может быть потому, что это getElementsByClassName (обратите внимание на множественное число).
  • 0
    getElementsByClassName вернет вам массив элементов, содержащих класс, поэтому вам нужно правильно выбрать нужный класс. как getElementsByClassName ('имя-класса') [index_of_class]
Показать ещё 2 комментария
Теги:
dom

1 ответ

0
Лучший ответ
var a = getElementsByClassName('classname');
for(var i=0; i<a.length; i++){
     //each element will be a[i] do whatever with them you want
}
  • 0
    По какой-то причине это сработало. Но я пытался таким же образом, точно так же, но не знаю, почему это не сработало тогда. Ну, главное, это работает. Спасибо Ашкан.
  • 0
    такие вещи часто случаются в программировании, и когда вы сталкиваетесь с проблемой того, что вы сделали, и очень просто, это просто делает программиста maddd. :) счастливого программирования

Ещё вопросы

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