2013-11-10 7 views
0

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

В моем коде я в настоящее время прокомментировал часть 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 ('class-name') [index_of_class] –

+0

Отдельно: В каком классе вы искали? В вашей цитированной разметке нет 'class =" ... "'. «Класс» в 'getElementsByClassName' относится к классу в атрибуте' class' (тот же, который используется CSS, когда вы используете селектор типа '.some-class'). –

ответ

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

По какой-то причине это сработало. Но я так старался, точно так же, но не знаю, почему тогда это не получилось. Ну, главное, что это работает. Спасибо, Ашкан. – Rob

+0

такие вещи случаются очень много в программировании, и когда у вас возникает проблема с тем, что вы сделали много и очень просто, это просто делает программиста maddd. :) счастливое программирование –

Смежные вопросы