Problem z skryptem

0

Witam. Dostałem od kolegi skrypt sluzacy do wyswietlania liczby graczy na serwerze oraz nicki osob grajacych. Wszystko fajnie tylko ze po najechaniu myszka na wybrany serwer pokazuje sie nastepne okno ktore dosc czesto sie zawiesza albo nie zamyka gdy myszka z niego zjedzie.. jestem zielony w js.. Wystarczy pojezdzic troche kuroserem myszki po nazwach serwerow zeby zrozumiec co jest nie tak. Czy ktos moze mi pomoc co z tym zrobic ? http://clanarena.pl/deus/

 <script src="https://oss.maxcdn.com/html5shiv/3.7.3/html5shiv.min.js"></script>
          <script>
         function zaladuj_liste_serwerow(){
             jQuery.post("servers_1.php",function(data){
                jQuery("#tabela_serwery").html(data);
                 jQuery("tr.tooltip").each(function() {
                     var id_tooltip = jQuery(this).attr("id");
                     var zawartosc = jQuery("#tooltip_"+id_tooltip);
                        jQuery(this).qtip({
                                content: zawartosc,
                             position: {
                               my: 'left center',
                               adjust: {
                                  mouse: true
                               }
                             }
                         });
                     });
                 setTimeout(function(){zaladuj_liste_serwerow();},1500, 1);
});
         }
         jQuery(document).ready(function(){
             setTimeout(function(){zaladuj_liste_serwerow();},350);
         });
      </script> 
1

Problem jest w tym, że odświeżasz listę serwerów w regularnych odstępach czasu nadpisując kod HTML elementu table.

setTimeout(function() { zaladuj_liste_serwerow(); }, 15000);

Po nadpisaniu kodu i załadowaniu nowych tooltipów poprzednio załadowane tooltipy nie zostają usunięte, dlatego może być wyświetlonych kilka na raz.

Proponuję ukrywanie wszystkich tooltipów przed utworzeniem nowych tooltipów. Podczas odświeżania listy serwerów tooltip zniknie na chwilę, a po chwili pojawi się z nową lub tą samą zawartością, jeśli kursor myszy wciąż jest nad elementem, który wymusza pokazanie tooltipa.

function zaladuj_liste_serwerow() {
    jQuery.post("servers_1.php",function(data) {
		$("div.qtip").hide();
		
		jQuery("#tabela_serwery").html(data);
		jQuery("tr.tooltip").each(function() {
			var id_tooltip = jQuery(this).attr("id");
			var zawartosc = jQuery("#tooltip_" + id_tooltip);
			jQuery(this).qtip({
				content: zawartosc,
				position: {
					my: 'left center',
					adjust: {
						mouse: true
					}
				}
			});
		});
		
		setTimeout(function() { zaladuj_liste_serwerow(); }, 15000);
	});
}

Jeśli chcesz uniknąć efektu znikania tooltipów na moment, to zamiast od razu ukrywać je dodaj im klasę oznaczającą, że są do ukrycia:

$("div.qtip").addClass("toBeHidden");

i obsłuż zdarzenie visible po wyrenderowaniu każdego nowego tooltipa usuwając tę klasę i ukrywając nieaktualne tooltipy:

events: {
    visible: function(event, api) {
        $("div.qtip.toBeHidden").removeClass("toBeHidden").hide();
    }
}							

W tym przypadku przez bardzo krótką chwilę tooltip może wydawać się ciemniejszy, bo zanim poprzedni tooltip zniknie, nakładają się na siebie dwa tooltipy, których łączna przezroczystość jest dwa razy mniejsza, niż przezroczystość jednego tooltipa.

0

Dzieki wielkie ale czy mógłbyś mi pomoć zmontować to w całość ? kombinowalem ale potem przestały sie wyświetlać serwery... to chyba przez to że w twoim kodzie nie było

jQuery(document).ready(function(){
             setTimeout(function(){zaladuj_liste_serwerow();},350);
         });

Nie mam pomysłu jak to zrobić.. jak możesz proszę zmontuj mi to w całość przyjacielu.

0

Witam, dopiero wczoraj zacząłem swoją przygodę z JavaScript i chciałem zrobić prosty program w którym wpisujemy 2 liczby i wyświetla nam która liczba jest większa #OD_CZEGOS_TRZEBA_ZACZAC !

Ale coś mi nie wyszło :/ Help me!

<html> <head> <meta charset="utf-8"> <script> function porownaj() {var p1 = document.getElementById("pole1").value; var p2 = document.getElementById("pole2").value; function wyru() { if(p1>p2) { document.getElementById("div").innerHTML = pole1 + ">" + pole2;} else if (p1<p2) {="{" +="+" "<"="&quot;&lt;&quot;" pole2;}="pole2;}" else="else" if(p1="p2)" "=" + pole2;}; } getElementById(" }="}" </script="&lt;/script" document.getelementbyid("div").innerhtml="pole1" div").innerhtml="wyru();"> </head> <body> <input type="text" id="pole1"> <input type="text" id="pole2"> <input type="button" value="Porównaj!" id="przycisk" onclick="porownaj()">
</body> </html>
0

Szat Mat założ osobny temat a nie wchodzisz z butami

1 użytkowników online, w tym zalogowanych: 0, gości: 1